2013-04-10 146 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