2013-04-10 200 views
0

我是新來的LINQ和實體框架,到目前爲止,我只能夠執行相對簡單的數據查詢。我剛開始查詢數據,並使用代碼,例如存儲在一個類中的結果:LINQ匿名類型與列表對象

public class myData 
{ 
    public string name { get; set; } 
    public string id {get; set;} 
} 

var data = (from t1 in MyContext.Table1 
      from t2 in MyContext.Table2 
      where t1.Id == "1" 
      select new myData 
      { 
       name = t1.Name, 
       id = t2.id 
      }).FirstOrDefault(); 

是否有可能也搶下面多到一個關係的數據?例如,如果有許多使用t1.Id存儲的「數據值」可以同時查詢這些數據?

例如

public class myData 
{ 
    public string name { get; set; } 
    public string id {get; set;} 
    public List<double> data {get; set;} 
} 

var data = (from t1 in MyContext.Table1 
      from t2 in MyContext.Table2 
      where t1.Id == "1" 
      select new myData 
      { 
       name = t1.Name, 
       id = t2.id 
       data = t2.datavalues  <== This obviously gives a conversion error 
      }).FirstOrDefault(); 

好像應該有解決這個合理的方式,但我一直沒能找到任何東西。

任何幫助,非常感謝!

+0

你的問題是不太清楚。 「MyContext.Table2」的元素類型是什麼,該類型是什麼樣的? – 2013-04-10 19:29:49

回答

1

你想要做的是Join表:

var query = from t1 in MyContext.Table1 
    join t2 in MyContext.Table2 
    on t1.Id == t2.Id into t2Values 
    select new myData 
    { 
     name = t1.Name, 
     id = t1.id, 
     data = t2Values.Select(t2 => t2.SomeField), 
    }; 
+0

我也不得不將我的類對象從列表數據更改爲IEnumerable數據。 – Castrona 2013-04-10 20:12:15