遇到與LINQ atm有關的問題。 我目前有一個類可以有兩個名稱 - MeterName和ChannelName;兩個字符串。但是,ChannelName屬性可能爲空或爲空。 該類稱爲ChannelRecord,其中包含與Meter + Channel名稱相關的其他一些屬性。基於對象列表中屬性的訂購地圖
這些存儲在列表中,該列表映射到字典中的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));
不過,我得到的是「其中一個對象必須實現IComparable」除外。這很有趣,因爲AFAIK,字符串實現了IComparable。我知道KeyValuePair沒有,但我是.Select()
從它的值。
什麼?
這是我去的解決方案,但它的'.OrderBy(元=> element.MeterName)' - 無需嵌套查詢。 –
@DanPantry你是對的,我複製粘貼你的代碼,預期列表。感謝您的更正。 – dasblinkenlight