?-6ren"> ?-我想按从抽象类继承的对象列表分组: 列表中项目的类型(在此示例中为 MyAction 或 MyObservation) 一个整数属性ClassId 一个字符串属性值 并计算出这些组。 public a-6ren">
gpt4 book ai didi

c# - 如何在 C# LINQ 中使用 3 个不同的 "qualities"获取计数的 IEnumerable.GroupBy

转载 作者:行者123 更新时间:2023-11-30 20:44:56 26 4
gpt4 key购买 nike

我想按从抽象类继承的对象列表分组:

  1. 列表中项目的类型(在此示例中为 MyAction 或 MyObservation)
  2. 一个整数属性ClassId
  3. 一个字符串属性值

并计算出这些组。

public abstract class MyData
{
public int ClassId;
public string Value;
//...
}

public class MyAction : MyData
{
//...
}

public class MyObservation : MyData
{
//...
}

// in some class...
IEnumerable<MyData> _myDatas;

void TryGroupBy()
{
var result = _myDatas.GroupBy(
data => KeySelector(data), /* ?? key is 3 pieces of info */,
data => ElementSelector/* ?? I didn't get this either */,
(row, rows) => new
{
ClassId = ?? /*how to get it from 3 piece key */
TypeOfObject = /* how to get it ?? */
Value = /* how to get it ?? */
Count = rows.Count
}));

最佳答案

您可以使用匿名类型作为键,然后使用 Key 属性(例如 group.Key.Id)访问属性,或者您可以使用 this overload这将为您提供 key 作为结果选择器的第一个参数:

_myDatas.GroupBy(
data => new { Type = data.GetType(), Id = data.ClassId, Value = data.Value },
(key, rows) => new
{
ClassId = key.Id,
TypeOfObject = key.Type,
Value = key.Value,
Count = rows.Count()
}));

关于c# - 如何在 C# LINQ 中使用 3 个不同的 "qualities"获取计数的 IEnumerable.GroupBy<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28767812/

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