簡體   English   中英

獲取LINQ中na組的記錄數

[英]Get number of records n a group in LINQ

我寫了一個LINQ查詢,其結果類似於此:

var res = from a  in tbl
          group a by {a.StateCode,a.CityCode} into grp
          //where grp.Count() == 1
          select ...

StateCode       CityCode           ......
------------------------------------------
01               001               ......
01               002               ......
02               001               ......
03               001               ......
03               002               ......
03               003               ......

我確實只想得到02 001記錄,因為它在最終結果中有一個結果行。如果我添加注釋代碼,它返回對應於每個組的記錄數而不是自己組的數。我知道我可以用兩個group by來執行此操作但是是否有更好的方法來獲取結果中包含(例如)一行的行?

您正在按StateCode CityCode分組,因此每個組只有一個元素。 您必須僅按StateCode分組,並再次where grp.Count() == 1

每個組均包含StateCode作為其鍵以及元素的枚舉。 由於您已經僅使用單個元素過濾了組,因此您只需返回每個組的第一個即可:

var res = from a in tbl
          group a by a.StateCode into grp
          where grp.Count() == 1
          select grp.FirstOrDefault();

這個怎么樣:

(from b in Tbls
where (from a in Tbls
       where a.StateCode == b.StateCode
       group a by a.StateCode into grp
       where grp.Count () == 1
       select grp).Count() > 0
select b).Dump();

這是我用來測試的SQL:

create table tbl (StateCode varchar(5), CityCode varchar(5))

insert tbl values ('01', '001')
insert tbl values ('01', '002')
insert tbl values ('02', '001')
insert tbl values ('03', '001')
insert tbl values ('03', '002')
insert tbl values ('03', '003')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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