以下是我试图获取不同项目列表的方式......
var queryResults = PatientList.Distinct();
PatientList = queryResults.ToList<SelectListItem>();
出于某种原因,我在这里没有得到明确的清单。
答案 0 :(得分:8)
使用
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
另一个可供参考的问题:Returning a Distinct IQueryable with LINQ?
答案 1 :(得分:1)
不确定您的PatientList包含哪些项目,但我想您必须在自定义对象上实现IEquatable。
此前已经解决了这个问题: Distinct not working with LINQ to Objects
答案 2 :(得分:1)
您的SelectListItem
课程需要覆盖Equals
和GetHashCode
(并可选择实施IEquatable<SelectListItem>
)。否则,具有相同值的不同实例将被视为不同。
另一种选择是实施IEqualityComparer<SelectListItem>
并将其作为第二个参数传递给Distinct
。