2013-01-10 86 views
0
var PAS = 
     (from v in dc.PAS 
      where 
      days.Contains(Convert.ToDateTime(v.fecha)) 
      group v.valor by new { v.entidad_id, v.modulo_id, v.peticion_id, v.hora_id, v.dia_id } into hg 
      orderby hg.Key.entidad_id descending, hg.Key.peticion_id ascending, hg.Key.hora_id descending 
      select new 
      { 
       Hora = hg.Key.hora_id, 
       Dia = hg.Key.dia_id, 
       Entidad = hg.Key.entidad_id, 
       Modulo = hg.Key.modulo_id, 
       Peticion = hg.Key.peticion_id, 
       Media = Math.Round(System.Convert.ToDouble(hg.Average()), 3, MidpointRounding.AwayFromZero) 
      }; 

然後做一個foreach,並將每個結果的新行插入到具有這個新值的另一個表中......(因爲我不能批量生成,至少我不知道如何在LINQ)Linq to SQL if語句

我有三個v.peticion_id可能的值...我想兩個「Media」欄目,用一個實際的媒體,而另一個只是v.peticion_id = 0價值......我無法解釋更好,所以這裏是我想要得到的一個例子...

Hora | Dia | Entidad | Modulo | Peticion | Media | Media2 
    0  0   0   0   0   333.3 | 333.3 
    0  0   0   0   1   4.4 | 333.3 
    0  0   0   0   2   0.7 | 333.3 
    1  0   0   0   0   178.2 | 178.2 
    1  0   0   0   1   1.8 | 178.2 
    1  0   0   0   2   0  | 178.2 

我希望有人能幫助我。 。

+0

第一組沒有'peticion_id',用條件'peticion_id == 0'計算'Media2',然後用'peticion_id'分組這些數據並計算平均值。 –

+0

你能寫一個示例代碼嗎?我不知道如何通過'peticion_id == 0'條件進行分組,然後在同一個查詢中通過'peticion_id'分組...謝謝 –

回答

0

只需選擇v.peticion_id == 0

還是我missunderstanding你想在這裏做什麼?

+0

如果我這樣做,我只會得到peticion_id == 0的結果,但我想得到0,1和2,但列Media2只是peticion_id的平均值== 0 –

+0

對不起@ user1381537,但我不知道你的意思。你能嘗試多解釋一下嗎? – Moriya