[英]Not getting Distinct Items when using Linq to List?
这是我试图获得一个独特的项目列表...
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
还有一个问题需要参考: 用LINQ返回一个独特的IQueryable?
不确定您的PatientList包含哪些项目,但我猜您必须在自定义对象上实现IEquatable。
这之前已经解决了:明确不使用LINQ to Objects
您的SelectListItem
类需要重写Equals
和GetHashCode
(并且可选地实现IEquatable<SelectListItem>
)。 否则,具有相同值的不同实例将被视为不同。
另一种选择是实现IEqualityComparer<SelectListItem>
并将其作为第二个参数传递给Distinct
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.