gpt4 book ai didi

c# - 如何转换 GroupedEnumerable?

转载 作者:行者123 更新时间:2023-11-30 19:49:53 25 4
gpt4 key购买 nike

我正在尝试使用 IQueryProvider.Execute 命令并传入一个表达式,该表达式是我的表达式树项目的一部分。此命令返回一个对象,该对象可以是 OrderedEnumerable 或 GroupedEnumerable,具体取决于原始表达式。 GroupBy 表达式创建 GroupedEnumerable 对象。下面的代码还创建了一个 GroupedEnumerable 对象,它将向您展示我遇到的问题的示例。

List<int> numbers = new List<int> { 1, 7, 16, 23, 41, 66 };
object grouped = numbers.GroupBy(n => n % 2 == 0);

当“grouped”是一个(GroupedEnumerable 的)对象时,我不能将它转换为任何其他允许我对其调用“GetEnumerator”的类型。我也无法将它转换为任何允许我将它与“foreach”命令一起使用的东西。如果我更改代码以使用“var”(如下所示),grouped 现在是 OrderedEnumerable 类型。我可以获得枚举器并在 foreach 命令中使用它。

List<int> numbers = new List<int> { 1, 7, 16, 23, 41, 66 };
var grouped = numbers.GroupBy(n => n % 2 == 0);

回到我的表达式树项目,IQueryProvider.Execute 命令返回一个对象,但当对象是 GroupedEnumerable 时,我需要能够将该对象转换为 OrderedEnumerable。我尝试过的所有转换都显示错误,如“无法将类型为‘System.Linq.GroupedEnumerable`3 的对象转换为类型......”。谁能告诉我如何将对象转换成更有用的东西?

最佳答案

您的 GroupBy 的结果电话将是IEnumerable<IGrouping<bool, int>> .如果将鼠标悬停在 var 一词上,您可以看到它在你的第二个代码示例中。将其转换为这种类型,它将正常工作。

List<int> numbers = new List<int> { 1, 7, 16, 23, 41, 66 };
object grouped = numbers.GroupBy(n => n % 2 == 0);

IEnumerable<IGrouping<bool, int>> foo =
(IEnumerable<IGrouping<bool, int>>)grouped;

编辑

在你上面的评论之后,如果你的调用输出是 GroupedEnumerable<MyEntityItem,int?,MyEntityItem> , 那么你可以将它转换为 IEnumerable<IGrouping<int?, MyEntityItem>> .

关于c# - 如何转换 GroupedEnumerable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205429/

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