Linq选择新列表属性空检查

时间:2014-07-10 11:32:37

标签: c# linq null

我有一个LINQ查询:

var productTypes = from ProductDto e in Product
                            select new 
                            {
                                Id = e.Product.ID, 
                                Name = e.Product.name 
                            };

在上面的LINQ查询中,e.Product可能是null。但我无法找到答案。

任何人都可以帮助我吗?如果e.Product为null,我想在productTypes变量中指定null

3 个答案:

答案 0 :(得分:13)

您可以使用ternary operator检查 null ,如下所示:

var productTypes = from ProductDto e in Product
                            select new 
                            {
                                Id = e.Product != null ? e.Product.ID : 0, 
                                Name = "xyz"
                            };

答案 1 :(得分:3)

如果您对产品中的空值感兴趣,可以添加where条件

var productTypes = from ProductDto e in Product
                        where e.Product.ID != null
                            select new 
                            {
                               Id = e.Product.ID, 
                               Name = e.Product.name 
                            };

如果您需要空值,请使用以下内容:

var productTypes = Product.Select( prod => {
            if (prod.ID != null)
            {
                return new { ID = prod.ID, Name = prod.Name };
            }
            else
            {
                return null;
            }
           } );

答案 2 :(得分:0)

我顺便说一句。我们可以使用lambda表达式来实现: -

var productTypes = ProductList.Where(x => x.Product != null)
                              .Select(x => new 
                                          { 
                                            Id = x.Product.ID, 
                                            Name = x.Product.Name 
                                          }).ToList();