gpt4 book ai didi

c# - IGrouping 的实现类是什么?

转载 作者:IT王子 更新时间:2023-10-29 04:30:05 32 4
gpt4 key购买 nike

我正在尝试创建一个 WCF 数据服务 ServiceOperation,它在服务器端进行分组,然后将数据发送到客户端。

当我尝试调用它(甚至连接到该服务)时,出现错误。它说它不能构造接口(interface)。

我使用的唯一接口(interface)是 IGrouping。

这个接口(interface)的实际类是什么?


更新:

我在调试示例应用程序时检查了类型,它告诉我它是:

System.Linq.Lookup<TKey,TElement>.Grouping

但是它在什么程序集里呢?

最佳答案

BCL 实现中的几种类型 IGrouping , 但是它们都是内部的,只能通过 IGrouping 访问界面。

但是一个IGrouping仅仅是一个IEnumerable<TElement>与关联的 key 。您可以轻松实现 IGroupingList<TElement> 支持这应该不难跨调用边界序列化:

public class Grouping<TKey, TElement> : IGrouping<TKey, TElement> {

readonly List<TElement> elements;

public Grouping(IGrouping<TKey, TElement> grouping) {
if (grouping == null)
throw new ArgumentNullException("grouping");
Key = grouping.Key;
elements = grouping.ToList();
}

public TKey Key { get; private set; }

public IEnumerator<TElement> GetEnumerator() {
return this.elements.GetEnumerator();
}

IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }

}

应用 GroupBy 后运算符,您可以创建 Grouping 的列表实例:

var listOfGroups =
source.GroupBy(x => ...).Select(g => new Grouping<TKey, TElement>(g)).ToList();

关于c# - IGrouping 的实现类是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8507561/

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