2015-12-04 3 views
2

Я хотел бы знать, можно ли возвращать данные, объединяя два типа данных.LINQ join return 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

Вы можете вернуть анонимный объект, если запрос будет оцениваться сразу, и вам не нужно передавать его как возвращаемый тип или тип аргумента какого-либо метода.

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