我在一个方法中有一个LINQ,它传递了一个HalfHour
个对象数组,每个对象包含一个DateAndTime
和一个HalfHourNumber
。
我需要分别查询每个,然后平均结果。目前我的查询仅适用于第一个元素(我选择元素[1]
):
internal static decimal? Average(this IQueryable<LOSSES> query, HalfHour[] array)
{
var list = query.ToList();
var numbers = (from q in list
where q.DAY == array[1].DateAndTime.Date
select q).Select(x => Calculations.SingleElement(x,
array[1].HalfHourNumber));
return numbers.Average();
}
如何防止需要在循环中多次执行此操作(多次调用查询),同时保持对象属性正确关联?
答案 0 :(得分:1)
要获取与LOSSES
var averages = list.Select(
q => array.Where(hh => q.DAY == hh.DateAndTime.Date)
.Select(hh => Calculations.SingleElement(q, hh.HalfHourNumber)
.Average()).ToList();
或者,将每个LOSSES
与字典中的平均值相关联(如果LOSSES
支持将其用作键):
var averages = list.ToDictionary(
q => q,
q => array.Where(hh => q.DAY == hh.DateAndTime.Date)
.Select(hh => Calculations.SingleElement(q, hh.HalfHourNumber)
.Average()
);