返回linq查询的结果,但修改了一个值
本文关键字:一个 修改 查询 linq 结果 返回 | 更新日期: 2023-09-27 18:15:23
我有一个这样的类
public class Product
{
public int Id {get;set;}
public string Name {get;set;}
public Category Category {get;set;}
}
现在我想用Linq
查询Listvar 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();
}
但是我正在将结果传递给调用者,我现在不想遍历我的产品
我不建议在Linq中这样做。您将业务逻辑(空值应该默认初始化)与dataaccess代码(获取我的产品)混合在一起。
你可以不改变你的产品类本身吗?将"Category"属性修改为如下内容:
private Category _category
public Category Category
{
get
{
if (_category == null)
_category = new Category();
return _category;
}
set
{
_category = value;
}
}