我有一些类似这样的课程:
public class A {
public DateTime Date { get; set; }
public int Hour { get; set; }
public decimal Value { get; set; }
}
public class B {
public DateTime Date { get; set; }
public C C { get; set; }
}
public class C {
public int Hour { get; set; }
public decimal Value { get; set; }
}
我有一个包含许多日期和每小时数值的列表,我想将其从该格式转换为B类型的List & lt;B & gt;
。
例如,如果List & lt;A & gt;
中有三天的数据(即24 x 3 = 72条记录),则应该在List & lt;B & gt;
中有三个B类型的对象 - 每个对象代表一天的数据,其中24个小时被分割成C类型。
我知道可以使用嵌套的foreach循环来完成这个任务,但我认为使用LINQ会更加优雅,并且在性能上也可能更好。
我正在尝试的代码是:
var res = from a in AList
select (new List<B>
{
new B
{
Date = a.Date,
C = new C()
{
Hour = a.Hour,
Value = a.Value
}
}
});
但是它返回的列表没有日期分组。我不确定如何建立这个分组。希望得到任何帮助!
group a by a.Date into bgroup
来进行分组,然后通过from b in bgroup select new B { Date = bgroup.Key, new C(b.Hour, b.Value) }
进行选择,而不是直接从 a 中选择 b。 - zahir