c# - LINQ 中的多级分组?

标签 c# linq

我有一个具有以下结构的记录列表:(简化示例!)

class Rate
{
    string Code;
    double InterestFrom;
    double InterestTo;
    double IncomeFrom;
    double IncomeTo;
    double Value;
}

是的,我定义了一个 List。我需要将此列表转换为以下简化结构:

class RateList
{
   List<Code> code;
}
class Code
{
    string code;
    List<Interest> interest;
}
class Interest
{
    double InterestFrom;
    double InterestTo;
    List<Income> income;
}
class Income
{
    double IncomeFrom;
    double IncomeTo;
    double Value;
}

我想用单个 LINQ 查询来完成此操作。我可以制定其他解决方案,但挑战是在一个 LINQ 语句中完成。 基本上,顶级组是按代码分组的。值 InterestFrom 和 InterestTo 的下一层和最低层是 IncomeFrom、IncomeTo 和 Value 的列表。

那么,为此,LINQ 语句是什么?

最佳答案

这是相当大的,但这是我所拥有的:

var rateList = new RateList
               {
                   code = (from r in rates
                           group r by r.Code into g
                           select new Code
                           {
                               code = g.Key,
                               interest = (from i in g
                                           group i by new {i.InterestFrom, i.InterestTo} into g2
                                           select new Interest
                                           {
                                               InterestFrom = g2.Key.InterestFrom,
                                               InterestTo = g2.Key.InterestTo,
                                               income = (from inc in g2
                                                         select new Income
                                                         {
                                                             IncomeFrom = inc.IncomeFrom,
                                                             IncomeTo = inc.IncomeTo,
                                                             Value = inc.Value
                                                         }).ToList()
                                           }).ToList()
                           }).ToList()
               };

关于c# - LINQ 中的多级分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1159233/

相关文章:

c# - 使用 System.Diagnostic Process 时,我会错过进程开始和捕获输出开始之间的一些输出行吗?

c# - Microsoft 是否修复了 .NET 4.0 中的 Linq to Entities 性能问题?

c# - 从父列表创建子列表

linq - 在 VB.NET 中使用 Linq 展平分层数据

LINQ - 组合多个列表以形成一个新列表并按键对齐?

c# - 如何在 C# 中将 GUID 转换为字符串?

c# - 如何在 C# 中将 EM_CHARFROMPOS 与 RichTextBox 一起使用

c# - 在列表中查找具有特定值的对象

c# - 异步方法在多个图像上传上首次运行失败

mysql - 数据读取器有多个字段。多个字段对 EDM 基元类型无效