Объединение результатов двух запросов Linq в единый Var?
У меня есть две разные базы данных, которые содержат две таблицы с одинаковым дизайном. Как объединить результаты этих двух запросов наиболее эффективно? Я знаю, что могу поместить результаты каждого в словарь или массив или что-то еще, но мне хотелось бы думать, что есть более простой способ сделать это.
var db1 = //A database object connected to database1
var db2 = //A database object connected to database2
var result1 = db1.table.where(a=>a.value>0);
var result2 = db2.table.where(a=>a.value>0);
var resultSum = result1+result2; //???
Спасибо!
Добавление: Concat или Union, что лучше для этого конкретного случая и почему? Спасибо!
Ответы
Ответ 1
Вы можете комбинировать перечисления одного и того же типа, вы можете проецировать оба на общий класс, а затем объединить их:
var result1 = db1.table.Where(a=>a.value>0).Select( x=> new Foo() { /*set props*/ });
var result2 = db2.table.Where(a=>a.value>0).Select( x=> new Foo() { /*set props*/ });
var resultSum = result1.Concat(result2);
Ответ 2
var resultUnion = Enumerable.Union(result1, result2)
или, используя синтаксис метода externsion,
var resultUnion = result1.Union(result2);
Ответ 3
Лучший способ сделать это с помощью Concat:
var resultingEnumerable = result1.Concat(result2);
Ответ 4
Вы должны посмотреть Union и Intersect.