2015-12-04 42 views
2

我想知道是否可以通过连接两个数据表来返回数据表。LINQ连接返回数据表

var query = from v in dt1.AsEnumerable() 
     join c in dt2.AsEnumerable() on v.Field<int>("ID") equals c.Field<int>("ID") 
     where v.Field<string>("col1").Equals("abcd") 
     && (c.Field<string>("col1").Equals("8776") || c.Field<string>("col1").Equals("8775")) 
     select new 
{}; 

我已经加入了两个不同条件的数据表。是否有可能从这两个数据表中的所有行中返回一个数据表?

回答

1

如果查询将立即进行评估,则可以返回匿名对象,并且不需要将其作为返回类型或某种方法的参数类型传递。

var query = from v in dt1.AsEnumerable() 
     join c in dt2.AsEnumerable() on v.Field<int>("ID") equals c.Field<int>("ID") 
     where v.Field<string>("col1").Equals("abcd") 
     && (c.Field<string>("col1").Equals("8776") || c.Field<string>("col1").Equals("8775")) 
     select new { v, c }; 

然后:

foreach (var result in query) { 
    var v = result.v; 
    var c = result.c; 
    // do your magic here 
} 

如果不是的话,你可以随时创建2个领域,每个表行一个简单的结构。

+0

我希望根据我在第一个查询中获得的数据,使用LINQ进行更多的过滤。我不能在你的上述解决方案中使用LINQ。 –

+0

您可以在'select'之前继续过滤连接的行 – Fede