Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Orderby和Linq_Linq_Sql Order By - Fatal编程技术网

Orderby和Linq

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

如何将orderby添加到此中:

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。非常感谢。