C# OrderBy具有StringComparison的词典列表

C# OrderBy具有StringComparison的词典列表,c#,linq,C#,Linq,因此,我有一个实现,其中一个字典列表根据它们的键进行排序 List<Dictionary<string, object>> queue = new List<Dictionary<string, object>>(); queue = queue.OrderBy(x => x[sortField]).ThenBy(x => x["WorkflowID"]).ToList(); 列表队列=新列表(); queue=queue.Order

因此,我有一个实现,其中一个字典列表根据它们的键进行排序

List<Dictionary<string, object>> queue = new List<Dictionary<string, object>>();
queue = queue.OrderBy(x => x[sortField]).ThenBy(x => x["WorkflowID"]).ToList();
列表队列=新列表();
queue=queue.OrderBy(x=>x[sortField])。然后是by(x=>x[“WorkflowID”).ToList();
现在,我试图在
[sortField]
之后添加
StringComparison.IgnoreOrdinalCase
,但返回的错误是,它有一些无效参数

难道真的不可能与字典进行比较吗


谢谢

StringComparison
是特定于
String
上某些方法的枚举。通用LINQ方法无法对该枚举进行操作


您应该改用
StringComparer
类,该类公开具有LINQ可以接受的相同名称的
IComparer
实例。

stringcomparator
是特定于
String
上某些方法的枚举。通用LINQ方法无法对该枚举进行操作


您应该改为使用
StringComparer
类,该类公开具有LINQ可以接受的相同名称的
IComparer
实例。

这实际上与字典无关,您调用的是常规的
OrderBy
LINQ方法。它正好在字典上

我假设你试过这个:

queue.OrderBy(x => x[sortField], StringComparer.OrdinalIgnoreCase)
并得到一个错误,因为
x[sortField]
返回一个对象,而不是字符串。因此,对
对象使用
IComparer
是无效的

如果确定“sortField”始终指向字符串值,则只需强制转换该值:

queue.OrderBy(x => (string)x[sortField], StringComparer.OrdinalIgnoreCase)

这实际上与字典没有任何关系,您正在调用常规的
OrderBy
LINQ方法。它正好在字典上

我假设你试过这个:

queue.OrderBy(x => x[sortField], StringComparer.OrdinalIgnoreCase)
并得到一个错误,因为
x[sortField]
返回一个对象,而不是字符串。因此,对
对象使用
IComparer
是无效的

如果确定“sortField”始终指向字符串值,则只需强制转换该值:

queue.OrderBy(x => (string)x[sortField], StringComparer.OrdinalIgnoreCase)

我试试这个。谢谢我试试这个。谢谢