像循环一样查询

本文关键字:一样 查询 循环 | 更新日期: 2023-09-27 18:33:48

我在方法中有一个 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();
}

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

像循环一样查询

要获取与您的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()
);