在 Linq 中将 IEnumerable 列表转换为分组列表
我有一个返回以下类型的函数:
IEnumerable<IGrouping<String, ExportTransaction>>
在此函数中,我使用 linq 表达式创建以下类型的列表:
IEnumerable<ExportTransaction>
Linq 代码如下所示:
IEnumerable<ExportTransaction> transactions = ctx.ExportTransactions
.Where(x => x.Id != null);
如何将“事务”转换为以下所示类型的分组列表本页顶部。该函数通过“事务”执行各种操作,因此它必须在函数内保留为“IEnumerable”,但在返回时必须转换为分组列表。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我假设交易有一个 name 属性,这就是您想要对交易进行分组的依据。如果情况并非如此,您所要做的就是更改 GroupBy 调用中的属性:
I'll assume that the Transactions have a name property and that's what you want to group the Transactions by. If that's not the case, all you have to do is change the property in the GroupBy call:
它真的需要分组吗?如果需要,您想按什么分组?按分组?在我看来,您拥有数据集,并且您可能会尝试将其强制转换为您不一定需要的格式。
通常,要对数据集进行分组,您需要执行以下操作:
这将创建一个
IEnumerable>
,将具有相同描述的所有交易分组,并假定每个交易都有描述。如果您需要单个组中的所有记录,您始终可以执行以下操作:
这将为您提供所需的组键为空字符串的信息,但我强烈建议不要这样做,而是建议查看为什么当您似乎不想按任何内容进行分组时需要返回分组。
Does it really need to be grouped and if so what do you want to group it by? It sounds to me like you have your data set and you could be trying to force it into a format you don't necessarily need.
Typically to group a data set you'd do something like:
That would create an
IEnumerable<IGrouping<string, ExportTransaction>>
grouping all the transactions with an identical description, presuming that each transaction had description.If you need all the records in a single group you can always do the following:
Which will give you what you need with the group key being an empty string, but I'd strongly advise against it and instead suggest looking at why you need to return a grouping when you don't seem to want to group by anything.