gpt4 book ai didi

c# - LINQ C# 复杂的嵌套结构

转载 作者:行者123 更新时间:2023-11-30 13:35:42 26 4
gpt4 key购买 nike

我设法从对象的复杂结构中做出选择,但只有在 foreach 的帮助下,我怎样才能避免这个 foreach 并解决我的问题,只使用 LINQ?

        var product = new List<ProductCrp>
{
new ProductCrp {
Strucutre = new StructureItem() {
CheckList = new CheckList() {
Checks = new List<Check>
{
new Check { NumberAsInt = "149" },
new Check { NumberAsInt = "260" },
new Check { NumberAsInt = null }
}
}
}
},
new ProductCrp {
Strucutre = new StructureItem() {
CheckList = new CheckList() {
Checks = new List<Check>
{
new Check { NumberAsInt = "261" },
new Check { NumberAsInt = "150" },
new Check { NumberAsInt = "260" }
}
}
}
}
};

string[] numbers = { "149" };

林克:

        foreach (var item in product)
{
item.Strucutre.CheckList.Checks = item.Strucutre.CheckList.Checks.Where(w => numbers.Contains(w.NumberAsInt)).Select(w => w);
}

最佳答案

I managed to make a selection from the complex structure of the object, but only with the help of foreach, how can I avoid this foreach and solve my problem, just using LINQ?

您不要为此目的使用 LINQ。您正在正确使用 foreach

LINQ 用于查询 数据。 foreach 循环是关于反复产生副作用foreach 的主体正在改变一个对象的属性;那是一个更新,而不是一个查询,所以你做得对。为此使用 LINQ 是错误的;不要这样做。

例如,使用 ToList 来强制迭代具有副作用的查询的答案是极其糟糕的风格,并导致代码效率低下,难以执行易于理解,难以维护,并且违背查询运算符的目的。永远不要那样滥用 LINQ。我们在语言中内置了一个结构,意思是“对每个集合元素执行一次此操作”,它称为 foreach。使用它。

关于c# - LINQ C# 复杂的嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47397670/

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