Any*_*are 3 c# linq asp.net list distinct
我希望从人员名单中获得不同的清单.
List<Person> plst = cl.PersonList;
Run Code Online (Sandbox Code Playgroud)
如何做到这一点LINQ.我想存储结果List<Person>
Distinct()会给你不同的价值 - 但除非你被覆盖Equals/ GetHashCode()你只是得到不同的参考.例如,如果您希望两个Person对象在名称相同时相等,则需要覆盖Equals/ GetHashCode以指示它.(理想情况下,实施IEquatable<Person>以及仅重写Equals(object).)
然后,您需要调用ToList()以将结果返回为List<Person>:
var distinct = plst.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)
如果你想通过一些特定的属性获得不同的人,但这不是"自然"平等的合适候选人,你需要使用GroupBy如下:
var people = plst.GroupBy(p => p.Name)
.Select(g => g.First())
.ToList();
Run Code Online (Sandbox Code Playgroud)
或使用MoreLINQ中的DistinctBy方法:
var people = plst.DistinctBy(p => p.Name).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |