首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq查询,如何从单表构建嵌套对象

Linq查询,如何从单表构建嵌套对象
EN

Stack Overflow用户
提问于 2009-06-10 08:47:16
回答 2查看 2.6K关注 0票数 3

我只有一个表,我需要在这个表的基础上构建一堆嵌套的对象。

数据:

PointA PointB月时间价格1 2 11 11:00 10.99 1 2 12 11:00 9.99

对象是

积分{PointA,PointB,Details}详情{Month,ExtraDetails} ExtraDetails {时间,价格}

我希望避免使用大量的循环和if语句,因此应该能够使用linq来完成此操作。但这超出了我的linq经验。

编辑:这些也需要分组

任何帮助都是最好的。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-10 09:22:14

刚刚尝试了一个解决方案:

代码语言:javascript
复制
var nestedObjects = from row in data
    select new {row.PointA, row.PointB, Details = new {
        row.Month, ExtraDetails = new {
            row.Time, row.Price
        }
    }};

这是假设您已经将数据放入数据中。

按分组的

如果你想把这些点组合在一起,你需要'Group By':

代码语言:javascript
复制
var nestedObjects = from row in data
    group row by new { row.PointA, row.PointB } into Points
    select new {
        Points = Points.Key,
        Details = from details in Points
            select new { row.Month, ExtraDetails = new {
                row.Time, row.Price
            }}
    };

稍微复杂一点-当然,你可能还想按月分组,在这种情况下,你需要遵循与点位相同的模式。注意,这不会创建表,因为group by并不能做到这一点,但它至少会为您创建结构。

票数 3
EN

Stack Overflow用户

发布于 2009-06-10 09:13:18

假设您已经为您提到的对象定义了类,并且您有一个构造函数或属性,这样您就可以在一行中正确地创建对象,您可以使用LINQ查询来返回点的列表。

如果是这样的话:

代码语言:javascript
复制
var res = 
    from item in table.AsEnumerable()
    select new Points(){PointA = item["PointA"];
                           PointB = item["PointB"]; 
                           Details = from item2 in table.AsEnumberable()
                                     where item["PointA"] = item2["PointA"] and item["PointB"] = item2["PointB"]
                                     select new Details(){
                                                          month=item2["month"],
                                                          extraDetails = from item3 in table.AsEnumerable()... 
                                                         }
                        };

在最后,res将是一个点的IEnumerable

很抱歉我的代码,我不是在一台装有.NET 3.5的计算机上,所以我不能写一个合适的可测试查询

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/974383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档