日期:2014-05-20  浏览次数:20732 次

刚接触linq,求教,如何返回对象类型的泛型集合List<Message>
RT:

我的问题是:
现有一泛型集合List<Message> list,
Message 是一个实体类,里面包含ID,Content等字段
能不能直接用linq去除list集合中Content内容重复的对象,

我的意思是如何不用转换list为string[] 类型的基础上筛选,即直接筛选list集合
返回的也是List<Message> 类型,而不是var

谢谢各位了,在线等

------解决方案--------------------
List<Message> result = list.GroupBy(x => x.Content).Select(x => x.Key).ToList();
------解决方案--------------------
List<Message> result = list.GroupBy(x => x.Content).Select(x => x.First()).ToList();
------解决方案--------------------
老曹的GroupBy是一种解决方案,还有另外一种,可以重载Distinct方法来实现:

C# code

public class MessageComparer : IEqualityComparer<Message>  
    {  
        public bool Equals(Message t1, Message t2)  
        {  
            return ( t1.Content== t2.Content);  
        }  
        public int GetHashCode(Message t)  
        {  
            return t.ToString().GetHashCode();  
        }  
    }  

//调用:

List<Message> list,
list=list.Distinct(new MessageComparer ()).ToList();