0

我在一个方法中有一个 LINQ,该方法正在传递一个HalfHour对象数组,每个对象都包含 aDateAndTime和 a 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();

}

我将如何防止需要在循环中执行此操作(多次调用查询)同时保持对象属性正确关联?

4

1 回答 1

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()
);
于 2012-05-11T10:27:52.270 回答