gpt4 book ai didi

c# - 封装LINQ GroupBy Select

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:42 24 4
gpt4 key购买 nike

我希望封装 GroupBy 的 Select 部分以获得更易读、更易理解和更好的代码。反正有办法吗?

这就是我现在所拥有的(而且我的代码中有很多GroupsBy,不仅仅是一个,这是尽可能封装的另一个原因):

 var xTypeAggregatedTransactions = xTypeTrtansactions.
.GroupBy(x => new {x.TypeId, x.AccountId})
.Select(y => new PayTransactionsCommand
{
Id = Guid.NewGuid(),
Narration = item.Name,
AccountId = y.Key.AccountId,
Credit = y.Sum(z => z.Credit),
});

这就是我想要的:

var xTypeAggregatedTransactions = xTypeTrtansactions.
.GroupBy(x => new {x.TypeId, x.AccountId})
.AsEnumerable().ToPayTransaction();

谢谢

最佳答案

写一个扩展类:

public static class TypeTrtansactionExtensions
{
public static IEnumerable<PayTransactionsCommand> ToPayTransaction(this IQueryable<TypeTrtansaction> query, string itemName)
{
return query.GroupBy(x => new { x.TypeId, x.AccountId })
.Select(y => new PayTransactionsCommand
{
Id = Guid.NewGuid(),
Narration = itemName,
AccountId = y.Key.AccountId,
Credit = y.Sum(z => z.Credit),
});
}
}

并称它为:

var xTypeAggregatedTransactions = xTypeTrtansactions.ToPayTransaction(item.Name);

此外,如果需要,您可以添加更多参数。

关于c# - 封装LINQ GroupBy Select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33989873/

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