0

我有一个Linq如下查询。

var DataSource = from m in product
                 select new { Class = m.Class, Id = (new Make(m.Id)).ProductName};

我实例化了一个名为 Make 的类并ProductName基于Id.

一些 Id 是 0。当我用 实例化 Make 类时Id = 0,它会抛出一个error. 有没有一种方法可以仅Id > 0Id = 0 display "none".

4

4 回答 4

2
var DataSource = from m in product              
                 select new {
                              Class = m.Class, 
                              Id = m.Id > 0 ? (new Make(m.Id)).ProductName 
                                            : "none"
                            };

或者

var DataSource = product.Select(p => new {
                                       Class = p.Class,
                                       Id = m.Id > 0 ? (new Make(m.Id)).ProductName 
                                                     : "none"
                                     });
于 2013-07-12T15:06:06.800 回答
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 
    };
于 2013-07-12T15:06:59.863 回答
2

您正在实例化一个Make对象,获取它ProductName,然后丢弃该实例。你为什么在这里使用一个类?听起来一种方法会更好地适应这种情况。为什么不调用一个方法GetMakeProductName(int id)。在此方法中,您可以查找产品名称,或者如果id == 0,则返回“无”。

于 2013-07-12T15:09:20.900 回答
0

你想要做的就像这样简单:

var DataSource = from m in product
                 select new { 
                     Class = m.Class, 
                     Id = m.Id == 0 ? "None" : (new Make(m.Id)).ProductName
                 };
于 2013-07-12T15:12:39.603 回答