gpt4 book ai didi

c# - 从 linq 查询返回结果但修改了一个值

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:48 26 4
gpt4 key购买 nike

我有这样一个类

public class Product
{
public int Id {get;set;}
public string Name {get;set;}
public Category Category {get;set;}
}

现在我想用Linq查询一个List

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();
}

但我正在将结果传递给调用者,此时我不想迭代我的产品。

最佳答案

我不建议在 Linq 中这样做。您将业务逻辑(空值应默认初始化)与 DataAcess 代码(获取产品)混合在一起。

你不能改变你的产品类别本身吗?将“类别”属性修改为类似内容。

private Category _category

public Category Category
{
get
{
if (_category == null)
_category = new Category();

return _category;
}
set
{
_category = value;
}
}

关于c# - 从 linq 查询返回结果但修改了一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16732935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com