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

Как объединить результат IQueryable <T> вместе?

Если я получаю два результата IQueryable из разных запросов Linq, и я хочу объединить их вместе и вернуть их в качестве результата, как к этому? Например, если:

var q1 = (IQueryable<Person>).....;
var q2 = (IQueryable<Person>).....;

как объединить q1 и q2 вместе и получить результат как

var q = (IQueryable<Person>)q1.Union(q2);
4b9b3361

Ответ 1

У вас есть это, q1.Union(q2). Союз находится в пространстве имен System.Linq с Queryable.

Ответ 2

Вы можете попробовать метод Concat

Что-то вроде этого

int[] i1 = new int[] { 1, 2, 3 };
int[] i2 = new int[] { 3, 4 };
//returns 5 values
var i3 = i1.AsQueryable().Concat(i2.AsQueryable());
//returns 4 values
var i4 = i1.AsQueryable().Union(i2.AsQueryable());

Союз даст вам только значения DISTINCT, Concat предоставит вам UNION ALL.

Ответ 3

(q1.Union(q2)).AsQuerable()

Ответ 4

С NHibernate Union невозможно.

Вам нужно обработать на стороне клиента вместо DB, обрабатывающей объединение. Я конвертирую IQueryable в IENumerable с помощью AsEnumerable, а затем использую расширение Concat.

var allItems = q1.AsEnumerable(). Concat (q2)

С уважением, Sebastian