所以我有一个实现,其中字典列表按照他们的密钥进行排序。
List<Dictionary<string, object>> queue = new List<Dictionary<string, object>>();
queue = queue.OrderBy(x => x[sortField]).ThenBy(x => x["WorkflowID"]).ToList();
现在,我正在尝试在StringComparison.IgnoreOrdinalCase
之后添加[sortField]
,但我收到的错误是它有一些无效的参数。
是否真的不可能将StringComparison与词典进行比较?
谢谢!
答案 0 :(得分:2)
这与字典无关,您正在调用常规的OrderBy
LINQ方法。它碰巧在字典上。
我假设你试过这个:
queue.OrderBy(x => x[sortField], StringComparer.OrdinalIgnoreCase)
收到错误,因为x[sortField]
会返回对象,而不是字符串。因此,IComparer<string>
对object
无效。
如果您确定&#39; sortField&#39;将始终指向一个字符串值,然后简单地转换值:
queue.OrderBy(x => (string)x[sortField], StringComparer.OrdinalIgnoreCase)
答案 1 :(得分:1)
StringComparison
是针对String
上某些方法的枚举。通用LINQ方法无法在该枚举上运行。
您应该使用StringComparer
类,它使用LINQ可以接受的相同名称公开IComparer<string>
个实例。