如何根据LINQ两个字段的组合选择不同的?

Cod*_*ody 2 linq asp.net where entity-framework-5

如何仅选择一行中只有两个值的明显组合的记录?

例如,说我有以下内容:

Name     |     Age     |     Height
------------------------------------
Joe          19               99
Kim          19               76
Joe          20               88
Joe          19               69
Run Code Online (Sandbox Code Playgroud)

我怎么能写一个LINQ表达式来只选择具有相同NameAND 的行Age

我想: var count = context.people.Where(p => (p.age && p.name).Distinct());var count = context.people.Where(p => (p.age.Distinct() && p.name.Distinct()));

这样做的正确方法是什么?

Jon*_*eet 7

您可以只选择匿名类型的名称和年龄,然后使用Distinct():

var results = context.people
                     .Select(p => new { p.Name, p.Age })
                     .Distinct();
Run Code Online (Sandbox Code Playgroud)

显然,这不会给你的高度,但当时没有单一的高度.如果你想要所有的高度,你需要分组:

var results = context.people
                     .GroupBy(p => new { p.Name, p.Age });
Run Code Online (Sandbox Code Playgroud)

这将为您提供一系列分组,其中每个分组包含具有相同名称和年龄的所有人.