0

HalfHourオブジェクトの配列が渡されているメソッドにLINQがあり、それぞれにaDateAndTimeと。が含まれています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 に答える