当使用Linq列表时,没有得到不同的项目
本文关键字:项目 Linq 列表 | 更新日期: 2023-09-27 18:07:13
这是我如何试图获得一个不同的项目列表…
var queryResults = PatientList.Distinct();
PatientList = queryResults.ToList<SelectListItem>();
由于某些原因,我在这里没有得到一个不同的列表
使用
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
类需要覆盖Equals
和GetHashCode
(并可选择实现IEquatable<SelectListItem>
)。否则,具有相同值的不同实例将被认为是不同的。
另一种选择是实现IEqualityComparer<SelectListItem>
并将其作为第二个参数传递给Distinct
。
不确定您的PatientList包含什么样的项目,但我猜您必须在自定义对象上实现IEquatable
这个问题之前已经有人回答过了: