C# List<A> 根据字段B,C,D分组
时间: 2024-11-06 12:19:43 浏览: 48
在C#中,如果你有一个`List<A>`类型的集合,其中A是一个类并且包含字段B、C和D,你可以使用LINQ (Language Integrated Query) 的`GroupBy`方法来按照这些字段进行分组。`GroupBy`可以根据指定的键属性将元素分组,返回的是一个`IGrouping<TKey, TElement>`类型的集合,其中TKey是你用于分组的关键字,而TElement是原始列表中的元素。
例如,假设A类有如下的结构:
```csharp
public class A
{
public int B { get; set; }
public string C { get; set; }
public double D { get; set; }
}
```
你可以这样做来进行分组:
```csharp
List<A> items = ... // 你的A类实例列表
var groupedItems = items.GroupBy(a => new { a.B, a.C, a.D });
```
现在,`groupedItems`是一个`IGrouping<int, A>[]`或者`IGrouping<(int, string, double), A>[]`的集合,每个分组都是一组具有相同B、C和D值的A对象。
如果你只想获取每个分组的总和或其他聚合操作,可以进一步对分组结果进行转换:
```csharp
var result = groupedItems.Select(g => new { Key = g.Key, SumOfD = g.Sum(a => a.D) }).ToList();
```
阅读全文