Выполнение UNION ALL на двух разных COUNT с использованием Linq-To-Sql - PullRequest
2 голосов
/ 01 июня 2010

Можно ли написать оператор linq-to-sql, который будет возвращать два разных СЧЕТА, которые были помещены в один набор данных с использованием UNION ALL?

Я знаю, что это синтаксически неправильно, но вот что я пытаюсь сделать:

(from t1 in TableOne select t1).Count().Union(
    (from t2 in TableTwo select t2).Count()
)

Вот sql, который я хотел бы получить:

select count(*) from TableOne
union all
select count(*) from TableTwo

Я понимаю, что Count () возвращает int и у него нет метода Union, и в этом мой вопрос. Можно ли написать Linq-to-Sql, чтобы достичь того, что мне нужно?

1 Ответ

2 голосов
/ 01 июня 2010

Вы можете просто вручную добавить оба значения в список, например:

var counts = new List<int>() { db.TableOne.Count(), db.TableTwo.Count() };

В целом, если ваши результирующие наборы являются коллекциями, а не отдельными значениями, эквивалент UNION ALL в LINQ будет Enumerable.Concat - вы хотите объединить результаты вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...