Jeśli otrzymam dwa wyniki IQueryable z różnych linery Query i chcę je połączyć i zwrócić jeden w wyniku, jak to zrobić? Na przykład, jeżeli:Jak połączyć wynik IQueryable <T> razem?
var q1 = (IQueryable<Person>).....;
var q2 = (IQueryable<Person>).....;
jak połączyć Q1 i Q2 razem i uzyskać wynik jak
var q = (IQueryable<Person>)q1.Union(q2);
Popraw mnie jeśli się mylę, ale IMO w tym roztworze należy wziąć pod uwagę, że parametr unia jest IEnumerable, więc nie zrobi Unii w bazie danych. Ponadto wywoła on dwa razy w bazie danych, ponieważ parametr jest IEnumerable i chociaż jedno przejście IQueryable zostanie wykonane jako kolejne wywołanie do bazy danych. Chciałem tylko wskazać, czy wydajność jest problemem w unii pamięci, czy w wywołaniach do bazy – fmaccaroni
@fmaccaroni Przyszedłem do tego pytania, ponieważ pomyślałem dokładnie to samo. Następnie zrobiłem szybki test w LINQPad 5, który * powinien * używać LINQ-SQL. 'q1.Union (q2)' produkuje 'SELECT * FROM (SELECT * FROM q1 UNION SELECT * FROM q2)'. Tak więc LINQ rzuca parametr 'IEnumerable' z powrotem do' IQueryable' gdzieś pod okładkami. –