我有一个Linq
查询,如下所示。
var DataSource = from m in product
select new { Class = m.Class, Id = (new Make(m.Id)).ProductName};
我实例化一个名为Make的类,并根据ProductName
获取Id
。
部分Id为0.当我使用Id = 0
实例化Make类时,它会抛出error
。有没有办法可以为Id > 0
以及Id = 0 display "none"
实例化Make Class。
答案 0 :(得分:2)
var DataSource = from m in product
select new {
Class = m.Class,
Id = m.Id > 0 ? (new Make(m.Id)).ProductName
: "none"
};
OR
var DataSource = product.Select(p => new {
Class = p.Class,
Id = m.Id > 0 ? (new Make(m.Id)).ProductName
: "none"
});
答案 1 :(得分:2)
你可以这样做:
var DataSource =
from m in product
let displayName = m.Id == 0 ? "none" : (new Make(m.Id)).ProductName
select new
{
Class = m.Class,
Id = displayName
};
答案 2 :(得分:2)
您正在实例化Make
对象,获取它ProductName
,然后抛弃实例。你为什么在这里上课?听起来这种方法可以更好地适应这种方法。为什么不调用方法GetMakeProductName(int id)
。在此方法中,您可以查找产品名称,或者如果id == 0
,则返回“无”。
答案 3 :(得分:0)
您想要做的就是这么简单:
var DataSource = from m in product
select new {
Class = m.Class,
Id = m.Id == 0 ? "None" : (new Make(m.Id)).ProductName
};