Подтвердить что ты не робот

Объединение результатов двух запросов 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, что лучше для этого конкретного случая и почему? Спасибо!

4b9b3361

Ответ 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.