linq查询不重复

zhanglong_longlong 2015-05-04 11:58:54

以下代码,查询Url不重复的前5条数据,linq怎么写。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<Class1> list = new List<Class1>()
{
new Class1{ Name="a1",Url="http://www.baidu.com"},
new Class1{ Name="a2", Url="http://www.baidu.com"},
new Class1{ Name="a3", Url="http://www.google.com"}
};
}
}
class Class1
{
public string Name { get; set; }
public string Url { get; set; }
}
}
...全文
200 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanglong_longlong 2015-05-04
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
(from l in list
group l by l.Url into g
where g.Count()==1
select g.First()).Take(5)
可能是我没说清楚,就是重复的Url可以显示一条
zhanglong_longlong 2015-05-04
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
(from l in list
group l by l.Url into g
where g.Count()==1
select g.First()).Take(5)
这个结果并没有显示出百度,也就是说重复的可以显示出一个,效果应该是有2条记录才对
tcmakebest 2015-05-04
  • 打赏
  • 举报
回复
给个测试数据先, URL相同时取哪个只字未提
  • 打赏
  • 举报
回复
(from l in list
group l by l.Url into g
where g.Count()==1
select g.First()).Take(5)
q107770540 2015-05-04
  • 打赏
  • 举报
回复
偷懒些做法可以这样:
 var result = list.GroupBy(x => x.Url).Select(x => x.First()).Take(5).ToList();
q107770540 2015-05-04
  • 打赏
  • 举报
回复
 class Program
    {
        static void Main(string[] args)
        {
            List<Class1> list = new List<Class1>()
            {
                new Class1{ Name="a1", Url="http://www.baidu.com"},
                new Class1{ Name="a2", Url="http://www.baidu.com"},
                new Class1{ Name="a3", Url="http://www.google.com"}
            };

            var result = list.Distinct(new Class1Compare()).Take(5).ToList();
            result.ForEach(x => Console.WriteLine(x.Url));
            Console.ReadKey();
        }
    }

    public class Class1
    {
        public string Name { get; set; }
        public string Url { get; set; }
    }

    public class Class1Compare : IEqualityComparer<Class1>
    {
        public bool Equals(Class1 x, Class1 y)
        {
            return string.Equals(x.Url,y.Url);
        }

        public int GetHashCode(Class1 obj)
        {
            if (Object.ReferenceEquals(obj, null)) return 0; 
            return obj.Url.GetHashCode();

        }
    }

8,497

社区成员

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

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