当前位置:编程学习 > C#/ASP.NET >>

Linq to sql 有什么办法可以实现消除列重复?

比如数据库里有一表,有两个字段:
ID   User
1    小白
2    小红
3    小白


过滤User列为小白的重复项后,我想要得到:
ID   User
1    小白
2    小红

如果写db.linq.customer.Distinct<customer>();这样只能是每行全部匹配过滤,请问我应该怎么做?提前祝大家新年快乐,来年发财! --------------------编程问答--------------------

 //自定义比较符
 public class MyComparer : IEqualityComparer<Customer>
    {
        public bool Equals(Customer x, Customer y)
        {
            return (x.User == y.User);
              
        }

        public int GetHashCode(User obj)
        {
            return obj.ToString().GetHashCode();
        }
    }
//消除重复数据
IEnumerable<Customer> CustomerDistinctList = db.Customers.ToList().Distinct(new MyComparer ());

--------------------编程问答-------------------- 楼上的很强。。。 --------------------编程问答-------------------- 真的很强,谢谢了! --------------------编程问答-------------------- (from h in HotelBasicInformation select h.ContinentId).Distinct() --------------------编程问答-------------------- 最后筛选的结果后面加个Distinct()方法就可以了,很简单的 --------------------编程问答-------------------- 你想要的应该是按user分组,取每组的第一个,如果按照1楼的做法,是不是每一个字段都得写一个自定义比较呀?有现成的东西,为什么不用:

            var o = from r in xe.Descendants("customer")
                    group r by r.Element("User").Value into g
                    select g.OrderBy(r=>r.Element("User").Value).FirstOrDefault();

FirstOrDefault()这个地方如果改成Take就可以取前几个,例如每班的前三名。
如果改成Skip(),可以取中间的,例如10-20名 --------------------编程问答-------------------- 说明:我上面是基于xml做的,因为我是写例如,附我的测试xml
<?xml version="1.0" encoding="utf-8" ?>
<customers>
  <customer>
    <ID>1</ID>
    <User>小白</User>
  </customer>
  <customer>
    <ID>2</ID>
    <User>小红</User>
  </customer>
  <customer>
    <ID>3</ID>
    <User>小白</User>
  </customer>
</customers> --------------------编程问答--------------------
引用 1 楼 gtx280 的回复:
C# code

 //自定义比较符
 public class MyComparer : IEqualityComparer<Customer>
    {
        public bool Equals(Customer x, Customer y)
        {
            return (x.User == y.User);
            ……


跟LZ一起学习... --------------------编程问答-------------------- 跟着你们学习,不错 --------------------编程问答--------------------
引用 1 楼  的回复:
C# code

 //自定义比较符
 public class MyComparer : IEqualityComparer<Customer>
    {
        public bool Equals(Customer x, Customer y)
        {
            return (x.User == y.User);
            ……


都自定义了 --------------------编程问答-------------------- 加个Distinct()方法不就行了?

http://msdn.microsoft.com/zh-cn/library/vstudio/bb348456.aspx
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,