2015-12-04 60 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