LINQ连接返回数据表

时间:2015-12-04 09:25:09

标签: c# linq datatable

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

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 个答案:

答案 0 :(得分: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个字段创建一个简单的结构,每个表对应一个。