【发布时间】:2019-01-10 21:25:56
【问题描述】:
var keyValuePairList = model.someDictionary.ToList();
keyValuePairList .OrderBy(r => r.Value);
问题是按字母数字值排序不正确。
输出:CR1 CR10 CR11 CR2 CR20
预期:CR1 CR2 CR10 CR11 CR20
【问题讨论】:
-
@TetsuyaYamamoto 我看了很多解决方案,包括您上面建议的可能重复项,但在我的情况下,它的 List
使它与众不同。我想不通。 -
@VijayendraShah - 你没有有
List<key, value>或List<string, string>,因为那是不可能的(除了创建你自己的类型......)。你确实(可能)有一个List<KeyValuePair<string, string>>,但这不是重点。为什么不干脆做类似yourDictionary.OrderBy(entry => MagicMethodThatWorksForLists(entry.Value))的事情,其中“魔法方法”可能类似于链接线程中的PadNumbers方法? -
您的输入是否总是“CR”后跟一个字符串化整数?如果是这样,请查看@ZevSpitz 的答案。如果不是,则模式是“两个 apha 字符”后跟一个整数,或者可能是“N 个字母字符”后跟一个整数。如果是后两种情况之一,则需要建立排序顺序(先是字母,然后是整数,或相反)。然后您需要找到一种方法来拆分字符串(Regex 可能会这样做)。一旦你这样做了,排序就很容易了。
-
@VijayendraShah - 又是一个问题:您似乎找到了
List<string>的解决方案,是什么让您认为这些相同的解决方案不适用于List<KeyValuePair<string, string>>? (或Dictionary<string, string>或基本上 anyIEnumerable<KeyValuePair<Whatever, string>>) -
@Corak 谢谢.....我听从了你的建议,填充工作。谢谢!!!!