我有这个IEnumerable:
var collection = from obj in list
select new
{
Title = (string)obj.Element("title"),
otherAtt = (string)obj.Element("otherAtt"),
..
..
..
..
};
我想删除'collection'中具有重复Title的所有对象。并留下有重复的最后一个。
例如:
collection = {
{Title="aaa" ,otherAtt="1" ,....},
{Title="bbb" ,otherAtt="2" ,....},
{Title="aaa" ,otherAtt="3" ,....},
{Title="aaa" ,otherAtt="4" ,....},
{Title="ccc" ,otherAtt="5" ,....},
{Title="bbb" ,otherAtt="6" ,....}
}
我需要过滤器使集合看起来像这样:
collection = {
{Title="aaa" ,otherAtt="4" ,....},
{Title="ccc" ,otherAtt="5" ,....},
{Title="bbb" ,otherAtt="6" ,....}
}
感谢。
答案 0 :(得分:0)
您可以使用Distinct()
扩展方法,但您必须编写IEqualityComparer,以便使用Title进行比较。
我认为这非常接近您的需求:http://forums.asp.net/post/2276937.aspx
答案 1 :(得分:0)
以下内容可行:
var noDuplicateTitles = collection
.GroupBy(obj => obj.Title)
.Select(group => group.Last())
对具有相同标题的所有对象进行分组,我们从每个组中取出最后一项。