c# linq groupby是默认去掉重复行吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# linq groupby是默认去掉重复行吗相关的知识,希望对你有一定的参考价值。

groupby 是分组统计用的,不是去掉重复行的!!会根据你选择的字段不同而发生不同的结果!!
但是喃,你可以当作是去掉重复行用,只是保证你的查询数据集结果显示上没重复
比如
字段A,字段B,字段C
1 2 3
1 3 4
2 1 3
3 2 1

select 字段A FROM ... GROUPBY 字段A
结果就是
1
2
3
select 字段A FROM ... GROUPBY 字段B
结果就是
1
1
2
3
所以要去重复的话,那么你要谨慎了,GROUPBY 后面的字段必须要在你的查询字段中出现,不然就会有问题的!!
参考技术A 这个是分组和去掉重复行有半毛钱关系?追问

不知道就是不知道,别装,正面回答好吗?我既然这么问肯定是遇到问题了

追答

那你把你遇到的问题说出来啥

如何在linq C#中使用group by并获取记录列表[重复]

【中文标题】如何在linq C#中使用group by并获取记录列表[重复]【英文标题】:how to use group by in linq C# and fetch the list of records [duplicate] 【发布时间】:2015-03-14 21:20:54 【问题描述】:

我有 2 个表,我根据某些要求进行了一些连接以返回记录列表。 我可以通过查询为我的 requiremnet 编写一个组并检查记录,但我在 Linq 查询中需要相同的内容。 我的 sql 查询是:

select 
   MiscServiceDesc, 
   sum(PaymentAmount),
   count(PaymentAmount) 
from 
   MiscTransaction MT 
join MiscService MS 
   on MT.MiscServiceID = MS.MiscServiceID 
group by 
  MiscServiceDesc

其中 MiscTransaction 和 MiscService 是我的两个表。

有什么帮助吗? 提前致谢

【问题讨论】:

我需要加入时。 @Santosh 写法一样,加入或不加入。 也可以查看这个帖子:***.com/questions/27730575/… 【参考方案1】:

试试这个。我不知道 MiscServiceDesc、PaymentAmount、PaymentAmount 哪些列在 MiscTransaction 表或 MiscService 表中,但您可以根据需要适当更改代码。

var result = (from mt in MiscTransaction 
               join ms in MiscService on mt.MiscServiceID equals ms.MiscServiceID
               select new ms.MiscServiceDesc, mt.PaymentAmount into lst
               group lst by lst.MiscServiceDesc into gr
               select new MiscServiceDesc  = gr.Key, Summ = gr.Sum(c=>c.PaymentAmount), Count = gr.Count()
       ).ToList();

【讨论】:

以上是关于c# linq groupby是默认去掉重复行吗的主要内容,如果未能解决你的问题,请参考以下文章

Linq在C#中按2列分组[重复]

C#编写一个方法,去除数组中重复数据。

如何在linq C#中使用group by并获取记录列表[重复]

无法访问 groupBy 数据 Linq C#

c# Linq及Lamda表达式应用经验之 GroupBy 分组

C# Linq 交集并集差集去重