c# - 如何使用 LINQ 合并树(和总计数)?

标签 c# linq tree

假设我有这些类(class):

public class Option
{
    public int OptionID { get; set; }
    public bool IsSelected { get; set; }
}

public class Product
{
    public int ProductID { get; set; }
    public int Quantity { get; set; }
    public List<Option> Options { get; set; }
}

假设这是我添加一些 Product 后的结果对象变成 List<Product>

2x Product 1 OptionID 1 OptionID 1 OptionID 2 OptionID 2

2x Product 1 OptionID 1 OptionID 1 OptionID 2 OptionID 2

如何使用 LINQ (lambda) 将这些结果转换为单个结果,其中 IsSelected = true

4x Product 1 4x OptionID 1 4x OptionID 2

最佳答案

如果我没有正确理解你的问题,这是很典型的 GroupBy :

var result = data.GroupBy(x => x.ProductID, 
                         (key, values) => new Product()
                         {
                            ProductID = key,
                            Quantity = values.Sum(p => p.Quantity),
                            Options = values.SelectMany(p => p.Options).ToList()
                         }).ToList();

所以 resultList<Product>包含关于 ProductID 合并的产品.

关于c# - 如何使用 LINQ 合并树(和总计数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578427/

相关文章:

c# - 我如何在 C# 中解决 Web/Windows 应用程序中的相对路径

c# - 如何使用 HTMLTextWriter 加载 CSS 文件

c# - 在 .NET 中,调用 .Count() 还是调用 .Count 更好?

c# - 如何检查一个项目是否存在于字符串列表中,如果存在,则获取其索引

c - 如何用C语言实现树形结构

java - 如何只遍历一棵树就得到一棵树?

c# - 使用 bool 数组作为自定义字典键

c# - 从动态数据透视表中加入具有匿名列的列表

c# - LINQ Group By 如果一个对象有 x 个属性,则在每个组上进行选择

java - MongoDB 树查找后代 Java