List 找出重复的记录并统计,,急。。。。

aspnet_2012 2012-08-01 10:25:37
有一个实体PRDT prdno,num

List<PRDT> lst 里面有多条记录 ,比如: {PRDT(k1,5),PRDT(k2,10),PRDT(k1,8),PRDT(k2,9),PRDT(k3,6)}

现在想得到这样一个结果:List<PRDT> re = {PRDT(k1,13),PRDT(k2,19)}

-----------------以上是伪代码,为了表达意思。

求最高效的方法,可以用LINQ
...全文
583 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
a157147899 2012-08-03
  • 打赏
  • 举报
回复

List<PRDT> list = new List<PRDT> { new PRDT("k1", 1, 5), new PRDT("k2", 2, 10),
new PRDT("k1", 1, 8), new PRDT("k2", 4, 9), new PRDT("k3", 5, 6) };
var query = from data in list
group data by new { prdno = data.Prdno, ck = data.Ck } into g
where g.Key.prdno == "k1"
select new { g.Key.prdno, ckSum = g.Sum(x => x.Ck), numSum = g.Sum(y => y.Num) };
wlf535944903 2012-08-03
  • 打赏
  • 举报
回复


class Program
{
static void Main(string[] args)
{

List<PRDT> list = new List<PRDT>() {

new PRDT(){ ck="k1", prdno="c1",num=5 },
new PRDT(){ ck="k2", prdno="c2",num=10 },
new PRDT(){ ck="k1", prdno="c1",num=8 },
new PRDT(){ ck="k2", prdno="c3",num=5 }

};

var rlist = list.GroupBy(x => new { x.ck, x.prdno }).Where(g => g.Count() > 1).Select(x => new PRDT() {prdno=x.Key.prdno, ck=x.Key.ck, num=x.Sum(c=>c.num) }).ToList();


}
}


public class PRDT
{
public string prdno { get; set; }

public string ck { get; set; }

public int num { get; set; }

}



wlf535944903 2012-08-03
  • 打赏
  • 举报
回复


var rlist = list.GroupBy(x => new { x.ck, x.prdno }).Where(g => g.Count() > 1).Select(x => new PRDT() {prdno=x.Key.prdno, ck=x.Key.ck, num=x.Sum(c=>c.num) }).ToList();

aspnet_2012 2012-08-01
  • 打赏
  • 举报
回复
重新表述一遍。

有一个实体PRDT prdno,ck,num

List<PRDT> lst 里面有多条记录 ,比如: {PRDT(k1,c1,5),PRDT(k2,c2,10),PRDT(k1,c1,8),PRDT(k2,c3,9),PRDT(k3,c3,6)}

现在想得到这样一个结果:List<PRDT> re = {PRDT(k1,c1,13)}

-----------------以上是伪代码,为了表达意思。

求最高效的方法,可以用LINQ
aspnet_2012 2012-08-01
  • 打赏
  • 举报
回复
谢谢。但是如果,我还要加一些属性进去怎么弄?
PRDT 还有一个仓库属性 CK 相加到最后的结果中,

并且仓库相同的才找出来

[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:
k3 不需要了。

引用 1 楼 的回复:

k3不要了?


C# code
List<PRDT> re =lst.GroupBy(r=>r.prdno)
.Where(g=>g.Count()>1)
.Select(g=>new PRDT{prdno=g.Key,num=g.Sum(x=>x.num)}).ToList();
[/Quote]
aspnet_2012 2012-08-01
  • 打赏
  • 举报
回复
我试试。
[Quote=引用 2 楼 的回复:]

List<PRDT> re =lst.GroupBy(r=>r.prdno).Select(g=>new PRDT{prdno=g.Key,num=g.Sum(x=>x.num)}).ToList();
[/Quote]
q107770540 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
k3 不需要了。

引用 1 楼 的回复:

k3不要了?
[/Quote]

List<PRDT> re =lst.GroupBy(r=>r.prdno)
.Where(g=>g.Count()>1)
.Select(g=>new PRDT{prdno=g.Key,num=g.Sum(x=>x.num)}).ToList();
aspnet_2012 2012-08-01
  • 打赏
  • 举报
回复
k3 不需要了。
[Quote=引用 1 楼 的回复:]

k3不要了?
[/Quote]
酷儿 2012-08-01
  • 打赏
  • 举报
回复
应该有函数的吧。你查下文档呢
q107770540 2012-08-01
  • 打赏
  • 举报
回复
List<PRDT> re =lst.GroupBy(r=>r.prdno).Select(g=>new PRDT{prdno=g.Key,num=g.Sum(x=>x.num)}).ToList();
q107770540 2012-08-01
  • 打赏
  • 举报
回复
k3不要了?

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧