2016-05-12 57 views
1

我有一個數據表與多個鍵列(key1,key2,...,keyN)。我想計算表中與特定條件匹配的不同鍵組合(IsInError = false)。C#Linq如何選擇一個數據表中的多列的不同行數

基本上我想執行的查詢

SELECT COUNT(*)FROM(SELECT DISTINCT鍵1,鍵2,...,keyN from表where IsInError = '假')一個

在數據表。

我已經研究了一點,發現僅包含一個鍵的表(並且沒有「其中」)我能做到這一點

DataTable table = new DataTable(); 

int nRows = table 
    .AsEnumerable() 
    .Select(r => r.Field<string>("key1")) 
    .Distinct() 
    .Count(); 

但我將如何去與多個按鍵做和一個條件?

回答

2

嘗試這樣:

table.AsEnumerable().Where(v => v.Field<bool>("IsInError") == false).Select(_ => new { key1 = _.key1, key2 = _.key2, ...., keyn=_.keyn }).Distinct().Count(); 
+1

謝謝!這工作完美!我不得不修改你的解決方案,因爲我沒有使用強類型數據表,IsInError是一個位字段。除此之外,它是完美的! – mortysporty

+0

編輯它以更好地適應您的答案。 –

+0

豎起大拇指! :) 謝謝 – mortysporty

-1

一羣可能更適合這種情況。

它會將列分組到不同的行,並在需要時返回計數。

var groups = table.GroupBy(_ => new {_.Key1, _.Key2, _.KeyN}) 
        .Select(_ => new { key = _.Key, count = _.Count()); 

這是未經測試的代碼,而是應該幫助你指明瞭正確的方向。

+0

謝謝!我會試一下! – mortysporty

相關問題