LINQ atm で問題が発生します。現在、MeterName と ChannelName の 2 つの名前を持つことができるクラスがあります。両方の弦。ただし、ChannelName プロパティは空または null の場合があります。このクラスは ChannelRecord と呼ばれ、Meter + Channel 名に関連するその他のプロパティがいくつか含まれています。
これらは List に格納され、ディクショナリの DateTime にマップされます。これは、次のことを意味します。
Dictionary<DateTime, List<ChannelRecord>> outputMap = ....;
メーターとチャンネル名に基づいてチャンネル レコードを並べ替えようとしています。メーターは数字と記号で始まり、最後に z が来ます。
これまでのところ、私のコードは次のようになります。
var orderedMap = outputMap.Select(x => x.Value) // as in KeyValuePair<TKey,TValue>
.OrderBy(list => list.Select(record => record.MeterName))
.ThenBy(list => list.Select(record => record.ChannelName));
ただし、「オブジェクトの 1 つは IComparable を実装する必要があります」という例外が発生します。私の知る限り、文字列は IComparable を実装しているので、これは面白いです。KeyValuePair がそうでないことは知っていますが.Select()
、そこから値を取得しています。
どうする?