gpt4 book ai didi

c# - 如何使用 LINQ 来避免嵌套循环?

转载 作者:可可西里 更新时间:2023-11-01 03:08:14 25 4
gpt4 key购买 nike

我一直在阅读有关 LINQ to Objects 的文章,现在我的同事希望我向他们展示它。

现在,我对运算符和语法选择有了一定的了解,但我听说您可以使用 LINQ 避免繁重的嵌套循环。不过,我很难想出一组很好的“之前和之后”代码 list 来证明这一点。

我在 Magennis 的书中找到了使用和不使用 LINQ 进行排序和分组的一个很好的例子,他还有一个编写 xml 的例子。但是那些嵌套循环呢?考虑到我们通常需要一个或两个 foreach 循环来遍历查询结果,这甚至是一个现实的说法吗?

如果有人能向我解释这个想法(最好有具体的例子),我将不胜感激。

最佳答案

假设您有很多产品,例如:

var products = new List<Product>
{
new Product { Id = 1, Category = "Electronics", Value = 15.0 },
// etc.
};

如果您想查找值(value) > 100.0 美元的所有产品,并按类别分组,您可以使用 foreach 执行此操作:

var results = new Dictionary<string, List<Product>>();

foreach (var p in products)
{
if (p.value > 100.0)
{
List<Product> productsByGroup;

if (!results.TryGetValue(p.Category, out productsByGroup))
{
productsByGroup = new List<Product>();
results.Add(p.Category, productsByGroup);
}
productsByGroup.Add(p);
}
}

或者,您可以简单地使用 LINQ 方法:

var results = products.Where(prod => prod.Value > 100.0)
.GroupBy(prod => prod.Category);

或者使用 LINQ 表达式语法:

var results = from p in products 
where p.Value > 100.0
group p by p.Category;

更加简洁且不易出错。

关于c# - 如何使用 LINQ 来避免嵌套循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8301904/

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