当使用Linq列表时,没有得到不同的项目

本文关键字:项目 Linq 列表 | 更新日期: 2023-09-27 18:07:13

这是我如何试图获得一个不同的项目列表…

    var queryResults = PatientList.Distinct();
    PatientList = queryResults.ToList<SelectListItem>();

由于某些原因,我在这里没有得到一个不同的列表

当使用Linq列表时,没有得到不同的项目

使用

var queryResults = PatientList.GroupBy(x=>x.Id).Select(x=>x.FirstOrDefault())
    PatientList = queryResults.ToList<SelectListItem>();

你可以试试

 PatientList = PatientList.GroupBy(x=>x.Id).Select(x=>x.FirstOrDefault()).ToList<SelectListItem>();

它会根据

分组给出不同的结果

查看http://blog.jordanterrell.com/post/LINQ-Distinct()-does-not-work-as-expected.aspx

还有另一个问题供参考:返回一个独特的iquerable与LINQ?

您的SelectListItem类需要覆盖EqualsGetHashCode(并可选择实现IEquatable<SelectListItem>)。否则,具有相同值的不同实例将被认为是不同的。

另一种选择是实现IEqualityComparer<SelectListItem>并将其作为第二个参数传递给Distinct

不确定您的PatientList包含什么样的项目,但我猜您必须在自定义对象上实现IEquatable

这个问题之前已经有人回答过了: