我只有一个表,我需要在这个表的基础上构建一堆嵌套的对象。
数据:
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经验。
编辑:这些也需要分组
任何帮助都是最好的。
谢谢
发布于 2009-06-10 09:22:14
刚刚尝试了一个解决方案:
var nestedObjects = from row in data
select new {row.PointA, row.PointB, Details = new {
row.Month, ExtraDetails = new {
row.Time, row.Price
}
}};这是假设您已经将数据放入数据中。
按分组的
如果你想把这些点组合在一起,你需要'Group By':
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并不能做到这一点,但它至少会为您创建结构。
发布于 2009-06-10 09:13:18
假设您已经为您提到的对象定义了类,并且您有一个构造函数或属性,这样您就可以在一行中正确地创建对象,您可以使用LINQ查询来返回点的列表。
如果是这样的话:
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的计算机上,所以我不能写一个合适的可测试查询
https://stackoverflow.com/questions/974383
复制相似问题