我有这样的课
public class Product
{
public int Id {get;set;}
public string Name {get;set;}
public Category Category {get;set;}
}
现在我想用 Linq 查询一个列表
var result = from p in products
select p;
我想要实现的是结果将设置一个默认类别,如果它是空的。
我能做的就是这个
var result = from p in products
select new Product()
{
Id = p.Id,
Name = p.Name,
Category = p.Category ?? new Category()
}
但这需要我重新设置每个字段。但这不是我想要的,因为我的真实世界实体有大约 50 个属性而不是 3 个,如果我将来添加另一个属性,我还必须重新编辑代码。我在想的是更像这样的东西:
var result = from p in products
select p { Category = p.Category ?? new Category() };
但这不会编译。
就像我在构建产品时会做的那样:
var product = new Product() { Category = new Category() };
我知道我可以这样做:
foreach (var p in result)
{
if(p.Category == null)
p.Category = new Category();
}
但我正在将结果传递给调用者,此时我不想遍历我的产品。