[英]C# Linq How to select the distinct row count of multiple columns in a datatable
我有一個包含多個鍵列(key1、key2、...、keyN)的數據表。 我想計算表中符合特定條件(IsInError = false)的不同組合鍵。
基本上我想執行查詢
SELECT COUNT(*) FROM (SELECT DISTINCT key1, key2, ..., keyN FROM TABLE WHERE IsInError = 'false') A
在數據表上。
我進行了一些研究,發現對於只包含一個鍵(並且沒有“位置”)的表,我可以做到這一點
DataTable table = new DataTable();
int nRows = table
.AsEnumerable()
.Select(r => r.Field<string>("key1"))
.Distinct()
.Count();
但是我將如何使用多個鍵和一個條件來做呢?
嘗試這樣的事情:
table.AsEnumerable().Where(v => v.Field<bool>("IsInError") == false).Select(_ => new { key1 = _.key1, key2 = _.key2, ...., keyn=_.keyn }).Distinct().Count();
group by 可能更適合這種情況。
它會將列分組為不同的行,並在需要時返回計數。
IE
var groups = table.GroupBy(_ => new {_.Key1, _.Key2, _.KeyN})
.Select(_ => new { key = _.Key, count = _.Count());
這是未經測試的代碼,但應該可以幫助您指明正確的方向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.