我有KeyValuePair<string, string>以下條目:
[adress_first_name, Andreas]
[adress_last_name, Test]
[adress_street, Berlinerstra?e 2]
[adress_street_name, Berlinerstra?e]
[adress_street_number, 2]
**[adress_street2, Tür 5]**
[adress_zipcode, 4600]
不幸的是,正確的順序必須是
[adress_first_name, Andreas]
[adress_last_name, Test]
[adress_street, Berlinerstra?e 2]
**[adress_street2, Tür 5]**
[adress_street_name, Berlinerstra?e]
[adress_street_number, 2]
[adress_zipcode, 4600]
由于有外部合作伙伴(簽署此串列,并且我們需要驗證簽名以確保沒有任何內容被操縱),排序順序必須與第二個示例類似。
使用 Linq 執行此操作的最佳方法是什么?當然,還有其他的,按照這個順序。street2 不是唯一的例子。

目前我在這里訂購串列

uj5u.com熱心網友回復:
首先通過使 address 和 address2 相同來對它們進行排序,然后按自然鍵排序以拆分平局:
.OrderBy(kv => (kv.Key.TrimEnd('2'), kv.Key))
這利用了元組按所有屬性按出現順序排序
您還可以使用長格式:
.OrderBy(kv => kv.Key.TrimEnd('2')).ThenBy(kv => kv.Key)
如果您有更多(地址 3、4、5..),您可以將它們添加到修剪中。如果您違反 9 并轉到地址 10,您可以 OrderBy 修剪所有數字,然后是密鑰的長度(所以 9 在 10 之前排序),然后是密鑰本身對數字進行排序
uj5u.com熱心網友回復:
使用序號字串比較器。
.OrderBy(kv => kv.Key, StringComparer.Ordinal);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/483194.html
上一篇:List<>屬性能夠有不同的型別,它們都繼承自同一個類
下一篇:是否有與VisualStudio2022.Net6.0兼容的Microsoft.Express.Drawing版本?
