Linq查询带有0值的特殊情况

时间:2013-07-12 15:04:36

标签: c# linq

我有一个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。

4 个答案:

答案 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
                 };