Linq如果查询重复的数据???

cfsjjjj 2017-04-05 03:34:00


请问怎么获取Name重复数据的KeId。 结果keId需要去重复!
...全文
3167 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovehong123 2017-04-20
  • 打赏
  • 举报
回复
var result = from t in table group t by t.Name into m where m.Count() > 1 select new { Name =m.Name};
xiaoxiangqing 2017-04-10
  • 打赏
  • 举报
回复
List<MyTable> table = new List<MyTable>(); table.Add(new MyTable { KeId = 1, Name = "AA", Score = 99 }); table.Add(new MyTable { KeId = 1, Name = "BB", Score = 88 }); table.Add(new MyTable { KeId = 1, Name = "AA", Score = 66 }); table.Add(new MyTable { KeId = 3, Name = "AA", Score = 65 }); table.Add(new MyTable { KeId = 3, Name = "CC", Score = 58 }); table.Add(new MyTable { KeId = 3, Name = "DD", Score = 58 }); table.Add(new MyTable { KeId = 3, Name = "DD", Score = 52 }); var query = table.AsEnumerable().GroupBy(one => one.Name).Select(one=>one.First()); var query2 = from a in table.AsEnumerable() group a by a.Name into temp select temp.First();
正怒月神 2017-04-06
  • 打赏
  • 举报
回复
static void Main(string[] args)
        {
            List<User> u = new List<User>() { 
                new User(){id=1,name="h",value=98},
                new User(){id=1,name="h",value=80},
                new User(){id=2,name="h",value=31},
                new User(){id=3,name="h1",value=65},
                new User(){id=4,name="h2",value=55},
            };
            var q = u.GroupBy(x => new { x.name, x.id }).Where(x => x.Count() > 1)
                .SelectMany(x => x.ToList()).ToList();


            Console.ReadLine();
        }
丰云 2017-04-06
  • 打赏
  • 举报
回复
垃圾的数据结构设计,才会产生这种奇葩的需求。。。。
Hertz_liu 2017-04-05
  • 打赏
  • 举报
回复

public class MyTable
{
	public int KeId { get; set; }
	public string Name { get; set; }
	public decimal Score { get; set; }
}

List<MyTable> table = new List<MyTable>();
table.Add(new MyTable { KeId = 1, Name = "AA", Score = 99 });
table.Add(new MyTable { KeId = 1, Name = "BB", Score = 88 });
table.Add(new MyTable { KeId = 2, Name = "AA", Score = 66 });
table.Add(new MyTable { KeId = 3, Name = "AA", Score = 65 });
table.Add(new MyTable { KeId = 3, Name = "CC", Score = 58 });
table.Add(new MyTable { KeId = 3, Name = "DD", Score = 58 });
table.Add(new MyTable { KeId = 4, Name = "DD", Score = 52 });

var result = from t in table
		     group t by t.Name into g
		     where g.Count() > 1
		     select new { Name = g.Key, KeIds = string.Join(",", g.Select(x => x.KeId).Distinct()) };
foreach (var item in result)
{
	Response.Write(string.Format("name:{0},keids:{1}<br/>", item.Name, item.KeIds));
}
输出内容: name:AA,keids:1,2,3 name:DD,keids:3,4
xdashewan 2017-04-05
  • 打赏
  • 举报
回复
引用 2 楼 cfsjjjj 的回复:
score不用管,先把Name重复的数据提出来。 如果KeId、Name都重复只保留一条
那就直接用那2个字段做group by,count大于1的就是重复
cfsjjjj 2017-04-05
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
你准备如何去重复,不同score你如何取舍,解决这个问题,重复问题可能迎刃而解
score不用管,先把Name重复的数据提出来。 如果KeId、Name都重复只保留一条
xdashewan 2017-04-05
  • 打赏
  • 举报
回复
你准备如何去重复,不同score你如何取舍,解决这个问题,重复问题可能迎刃而解

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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