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)
我试试这个。谢谢我试试这个。谢谢