2010-06-01 15 views
2

是否可以編寫一個linq-to-sql語句,該語句將使用UNION ALL返回已放入單個數據集的兩個不同的COUNT?在使用Linq-To-Sql的兩個不同的COUNT上執行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 

我意識到計數()返回一個int,並且沒有Union方法,其中存在我的問題。可以編寫Linq-to-Sql來實現我所追求的目標嗎?

+0

Linq擴展方法'Union'與SQL'UNION ALL'不同。 – 2010-06-01 18:52:26

回答

2

你可以隻手動將兩方面都放入一個列表,像這樣:

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

更一般地,如果你的結果集的集合,而不是單一的值,相當於LINQ的UNION ALLEnumerable.Concat - 你想要將結果連接在一起。