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