2015-11-18 91 views
1

我需要從這個LINQ得到的值:循環IEnumerable和獲取值

var joinPreRes = (from t1 in db.preguntas_respuestas 
        join t2 in db.respuesta1 
        on t1.id_respuesta equals t2.id 
        where t1.id_pregunta == id 
        group new 
        { 
         t1.id, 
         t1.id_respuesta, 
         t2.respuesta_visual, 
         t2.respuesta_valor 
        } by t1.id); 


foreach (var a in joinPreRes) 
{ 


} 

如何可以訪問到的ID或id_respuesta_visual上的foreach ???

+2

當你調試這個時,'a'有什麼屬性? – David

+2

@大衛:甚至沒有調試,intellisense應該能夠給OP的答案。 –

+0

在你的「foreach」中訪問'id_respuesta_visual'沒有任何意義,按照不同的標準分組,每個'a'沒有唯一的'id_respuesta_visual'。 – nvoigt

回答

3

你創建一個組,所以你應該迭代分組的項目。

var joinPreRes = from t1 in db.preguntas_respuestas 
          join t2 in db.respuesta1 
          on t1.id_respuesta equals t2.id 
          where t1.id_pregunta == id 
          group new 
          { 
           t1.id, 
           t1.id_respuesta, 
           t2.respuesta_visual, 
           t2.respuesta_valor 
          } by t1.id into GroupedItems 
          select GroupedItems; 


foreach (var a in joinPreRes) 
{ 
    // a.Key is the t1.id 

    foreach (var subItem in a) 
    { 
     // subItem.id_respuesta <- other fields/properties 
     // subItem.respuesta_valor <- other fields/properties 
    } 
} 
0

使用選擇功能選擇 (X => x.id & & x.respuesta_visual);

0

可能需要

group new 
{ 
    t1.id, 
    t1.id_respuesta, 
    t2.respuesta_visual, 
    t2.respuesta_valor 
} by new 
{ 
    t1.id, 
    t1.id_respuesta, 
    t2.respuesta_visual, 
    t2.respuesta_valor 
} 
0

每個a你遇到將是一個IGrouping其中Key是一個整數,並且有在分組的一個或多個元素。

由於使用id作爲Key,您可以從a.Key獲得id

可通過將a視爲IQueryable來訪問其餘屬性。例如:

var firstRespuesta = a.First().id_respuesta; 

foreach(var item in a) 
{ 
    DoSomething(item.respuesta_visual); 
} 

依此類推。

0

您的問題的答案在於,foreach循環中的a變量是一個匿名對象的集合,其中的屬性在group new塊中定義。因此,要訪問論文項目,你可以做的foreach塊以下幾點:

foreach (var a in joinPreRes) 
{ 
    foreach (var item in a) 
    { 
     Console.WriteLine(item.id); 
     Console.WriteLine(item.id_respuesta_visual); 
    } 
} 

當然,你不必有一個內「的foreach」循環,但這是我向您展示最簡單的方法如何訪問匿名項目。