从集合的List <T>中获取唯一ID记录

Dan*_*-SP 3 c# linq asp.net

我得到了以下代码:

public class Collect
{
     public string name{ get; set; }
     public int id { get; set; }
     public DateTime registerDate { get; set; }
}

public class ControllingMyList
{

    public void prepareList()
    {
        List<Collect> list = new List<Collect>();

        list= loadList();

        //Rest of the opperations
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑到我的loadList方法为我返回了许多重复的记录(id变量)我想通过ID只得到一条记录.

Distinct()函数似乎是一个很好的解决方案,但如果我没记错的话,Distinct()过滤掉对象的所有成员只是因为与"registerDate"变量的第二个区别被认为是使其区别的标准,即使它具有相同的ID .

Bro*_*ass 6

你有几个选择:

  • 使用DistinctBy()MoreLinq项目中的扩展方法
  • 使用Distinct()接受自定义相等比较器的重载,并实现自定义比较器
  • 使用Linq GroupBy( x=> x.id)然后获取每个组的第一项.


seh*_*ehe 6

    var list= loadList();

    list = list 
        .GroupBy(i => i.id)
        .Select(g => g.First())
        .ToList();
Run Code Online (Sandbox Code Playgroud)