2012-05-11 30 views
0

我正在傳遞一個HalfHour對象數組的方法中有一個LINQ,其中每個對象包含一個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(); 

} 

我怎麼會妨礙需要一個循環內做到這一點(調用查詢多次),但保持正確關聯對象的屬性?

回答

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() 
); 
+0

感謝 - 我不得不四處換陣和列表,但你不知道:-) –