1

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()、そこから値を取得しています。

どうする?

4

2 に答える 2