2

行内の 2 つの値のみの明確な組み合わせを持つレコードのみを選択するにはどうすればよいですか?

たとえば、次のものがあるとします。

Name     |     Age     |     Height
------------------------------------
Joe          19               99
Kim          19               76
Joe          20               88
Joe          19               69

Name同じANDを持つ行のみを選択する LINQ 式を作成するにはどうすればよいAgeですか?

私は試しました: var count = context.people.Where(p => (p.age && p.name).Distinct()); そしてvar count = context.people.Where(p => (p.age.Distinct() && p.name.Distinct()));

これを行う正しい方法は何ですか?

4

2 に答える 2

7

名前と年齢だけを匿名型に選択してから、次を使用できますDistinct()

var results = context.people
                     .Select(p => new { p.Name, p.Age })
                     .Distinct();

明らかに、それは高さを与えませんが、単一の高さはありません. すべての高さも必要な場合は、代わりにグループ化する必要があります。

var results = context.people
                     .GroupBy(p => new { p.Name, p.Age });

これにより、グループ化のシーケンスが得られます。各グループ化には、名前と年齢が同じすべての人が含まれます。

于 2013-03-28T20:38:31.513 に答える
0

GroupBylinq でこれらのシナリオに 使用する必要があります。

var result = people.GroupBy(p => new{p.Name, p.Age})

.Select(g => g.Key)

更新: Jon Skeet が述べたように、これにより、値
に基づくグループ化のリストが得られます。次に、たとえば、すべての名前/年齢グループで最も高いものを含むタイプの結果を取得するために追加できます。NameAge.Select(g => g.Max(p => p.Height))List<Person>

于 2013-03-28T20:39:24.570 に答える