4

を含むカスタムデータ型がありますList<string>

そのネストされたListによってのをグループ化したい。CustomDataTypeList<string>

私は以下を試しました

 compoundSchedules.GroupBy(a => a.Timepoints);

Timepoints文字列として表される日付のリストはどこにありますか。いずれかCustomDataTypeの時点が同じである場合、それらをグループ化することを望みます。上記のコードを使用すると、それらはグループ化されず、代わりに、タイムポイントリストをとしてListでのを繰り返します。CustomDataTypeIGrouping Key

ありがとう。

4

4 に答える 4

2

2つのことが頭に浮かびます。1つは、Timepointsクラスを作成し、IComparableを実装することです。次に、各リストの各要素を比較して、それらが同等であるかどうかを確認できます。または、リストのハッシュコードを保持する新しいプロパティを複合スケジュールに作成することもできます。

于 2012-07-09T15:37:32.690 に答える
2

IEqualityComparer<List<string>>リストの長さと内容が同じであることを確認するを作成し、次のオーバーロードを使用する必要がありEnumerable.GroupByます。

compoundSchedules.GroupBy(a => a.Timepoints, myComparer);

それか、タイムポイントのリストとなる独自のクラスを作成し、デフォルトの比較プログラムGetHashCodeで使用される実装およびEquals(および/または実装IEquatable<T>)を行います。

于 2012-07-09T15:51:41.217 に答える
1

Timepointsは-なので、それList<string>によって1つの集約された文字列とグループを作成します。これは、Aggregateメソッドを使用して実現できます

compoundSchedules.GroupBy(a => a.Timepoints.Aggregate( (x,y) => x + y));
于 2012-07-09T15:35:25.757 に答える
0

文字列の結合リストでグループ化できます。

var grouped = compoundSchedules.GroupBy(cs => string.Join("", cs.Timepoints));

これも同じ順序を処理します(これが必要な場合)。

于 2012-07-09T15:47:46.057 に答える