Orderby和Linq
如何将orderby添加到此中:Orderby和Linq,linq,sql-order-by,Linq,Sql Order By,如何将orderby添加到此中: return (from m in response["holder"].Children() orderby m["name"] select new SelectListItem { Text = m["name"].ToString(), Value = m["name"].ToSt
return (from m in response["holder"].Children()
orderby m["name"]
select new SelectListItem
{
Text = m["name"].ToString(),
Value = m["name"].ToString()
}).ToList();
问题是,响应变量中返回的json有一个名称列表,所有名称都有一个大写的第一个字母,除了一个之外,因此它们的顺序都很好,只有一个小写的名称卡在SelectListItem列表的底部
有什么想法吗
提前谢谢
编辑:
其他信息-我正在使用JSON.NET解析JSON响应。响应变量是一个JObject。您需要在您的
orderby
过程中规范化数据。在我的示例中,我选择使用以下方法:
我还假设m[“name”]
已经是String
对象。如果不是,请将行更改为:
orderby m["name"].ToString().ToUpperInvariant()
您需要在您的
orderby
过程中规范化数据。在我的示例中,我选择使用以下方法:
我还假设m[“name”]
已经是String
对象。如果不是,请将行更改为:
orderby m["name"].ToString().ToUpperInvariant()
也许是这样的:
return (from m in response["holder"].Children()
orderby m["name"].ToString().ToLower()
select new SelectListItem
{
Text = m["name"].ToString(),
Value = m["name"].ToString()
}).ToList();
也许是这样的:
return (from m in response["holder"].Children()
orderby m["name"].ToString().ToLower()
select new SelectListItem
{
Text = m["name"].ToString(),
Value = m["name"].ToString()
}).ToList();
在方法语法中使用
OrderBy
方法时,可以指定StringComparer
。传递忽略大小写的StringComparer
,可以解决您的问题:
response["holder"]
.Children()
.OrderBy(m => m["name"], StringComparer.CurrentCultureIgnoreCase);
在方法语法中使用
OrderBy
方法时,可以指定StringComparer
。传递忽略大小写的StringComparer
,可以解决您的问题:
response["holder"]
.Children()
.OrderBy(m => m["name"], StringComparer.CurrentCultureIgnoreCase);
我用这个得到了一个参数错误,我想这是因为响应本质上是一个IEnumerablehat的列表,它是
Children()
?可能错误在于m[“name”]不是字符串。尝试使用.ToString()或将其强制转换。我在我的帖子中更新了它。我使用它得到了一个参数错误,我认为这是因为响应本质上是一个IEnumerablehat的列表,它是Children()
?可能错误在于m[“name”]不是字符串。尝试使用.ToString()或将其强制转换。我在我的帖子中更新了它。谢谢你的快速回答-这很有效。我尝试过的一系列标准排序都不起作用,因为响应是来自JSON.NEt的JObject。非常感谢。谢谢你的快速回答-这很有效。我尝试过的一系列标准排序都不起作用,因为响应是来自JSON.NEt的JObject。非常感谢。