簡體   English   中英

C# Linq 如何選擇數據表中多列的不同行數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM