在LINQ中,如何为每个ID选择一个项目?

Nib*_*Pig 3 c# linq

这可能是显而易见的,但我无法理解它.

我有一个项目列表,例如:

BOB 5
Brian 5
Sam 6
James 7
Emily 8
Sandra 8
Michael 8
Run Code Online (Sandbox Code Playgroud)

这些是在 List<MyObject>

我想过滤列表,因此每个ID只有1个项目,通过选择具有唯一ID的第一个项目.

我应该结束

BOB 5
Sam 6
James 7
Emily 8
Run Code Online (Sandbox Code Playgroud)

我在制定干净的方法时遇到了麻烦.有任何想法吗?

Mar*_*zek 8

使用GroupByFirst方法相结合:

var results = source.GroupBy(x => x.Id).Select(g => g.First()).ToList();
Run Code Online (Sandbox Code Playgroud)

或者作为基于语法的查询:

var results = (from i in source
               group i by i.Id into g
               select g.First()).ToList();
Run Code Online (Sandbox Code Playgroud)