我有一个返回以下类型的函数:
IEnumerable<IGrouping<String, ExportTransaction>>
在这个函数中,我使用linq表达式创建了以下类型的列表:
IEnumerable<ExportTransaction>
Linq代码如下所示:
IEnumerable<ExportTransaction> transactions = ctx.ExportTransactions
.Where(x => x.Id != null);
如何将“交易”转换为本页顶部所示类型的分组列表。该函数使用“事务”执行各种操作,因此它必须在函数内保留为“IEnumerable”,但在返回时必须转换为分组列表。
答案 0 :(得分:1)
我假设交易有一个名称属性,这就是你要对交易所分组的内容。如果不是这种情况,您只需更改GroupBy调用中的属性:
var transactions = ctx.ExportTranactions
.Where(x => x.Id != null)
.GroupBy(x => x.Name);
答案 1 :(得分:0)
是否真的需要进行分组,如果是,您希望将 分组?听起来像你有你的数据集,你可能试图强迫它成为你不一定需要的格式。
通常,要对数据集进行分组,您需要执行以下操作:
var grouping = ctx.ExportTransactions.Where(x => x.Id != null)
.GroupBy(x => x.Description);
这会创建一个IEnumerable<IGrouping<string, ExportTransaction>>
对具有相同描述的所有交易进行分组,假设每个交易都有描述。
如果您需要单个组中的所有记录,您可以始终执行以下操作:
var grouping = ctx.ExportTransactions.Where(x => x.Id != null)
.GroupBy(x => string.Empty);
如果组密钥为空字符串,这将为您提供所需的内容,但我强烈建议不要使用它,而是建议您查看为什么在需要时返回分组似乎想要分组。