3

これらの2つの行は同じことをしているようです。匿名タイプの代わりにプラス記号(+)を使用できます。

var newlist1 = list.GroupBy(x => x.FIELD1 + x.FIELD2).Select(y => y.First());

var newlist2 = list.GroupBy(x => new {x.FIELD1, x.FIELD2}).Select(y => y.First());

今私の質問:

プラス記号(+)は、GroupByで文書化されているものですか?

4

1 に答える 1

7

これに注意してください:)たとえばx.FIELD1、andx.FIELD2がstring型のプロパティである場合、2つを連結した結果によってグループ化するだけです....これはおそらくあなたが望むものではありません。もちろん他のタイプにも同じことが当てはまりますが、文字列の例はまだ次のとおりです。

Field1="ABC"と="DEF"が与えられた場合Field2、グループ化はキー"ABCDEF"で行われます。

Field1では、 ="AB"とField2="CDEF"があったらどうなるでしょうか。値は大きく異なりますが、グループ化は「ABCDEF」のままです。

グループ化(メソッド内でのみ使用される場合)、または外部で必要な場合は、新しいクラス、構造体、またはタプルを使用するために、匿名型に固執する必要があります。

編集:別の簡単なメモ:(投影なしで)実行した後GroupBy、取得しているキー値を見てください....それは私が意味することの例を示すはずです。

于 2013-02-11T14:11:12.343 に答える