如何使用 LINQ 对基于 StatrtWith 的字符串列表进行排序
How to order list of string based on StatrtWith using LINQ
我有一个字符串列表如下所示。我想根据开始值对名称进行排序。我尝试了一些案例但失败了。
例子
列表包含
等数据
name: "Bible Reading",
name: "Scripture Reading",
name: "Ready Set",
name: "Career Readings",
name: "Reading-Berks"
我将 queryValue 作为 "read" 传递,但我无法根据值进行排序。
IOrderedEnumerable<string> name = result.Select(x => x.name)
.OrderBy(i => i.StartsWith(queryValue));
预期输出,
name: "Ready Set",
name: "Reading-Berks"
name: "Bible Reading",
name: "Scripture Reading",
name: "Career Readings",
我认为这是区分大小写的问题。
替换
.OrderBy(i => i.StartsWith(queryValue));
和
.OrderByDescending(i => i.StartsWith(queryValue, StringComparison.InvariantCultureIgnoreCase));
因为 "Ready Set".StartsWith("read")
会 return false
您必须使用 OrderByDescending
和不区分大小写的比较来获得所需的结果,因此您的查询将如下所示:
IOrderedEnumerable<string> name = result.Select(x => x.name)
.OrderByDescending(i =>i.StartsWith(queryValue,StringComparison.InvariantCultureIgnoreCase));
这里有一个 working example 可以区分 OrderByDescending
和 OrderBy
这个例子
我有一个字符串列表如下所示。我想根据开始值对名称进行排序。我尝试了一些案例但失败了。 例子 列表包含
等数据name: "Bible Reading",
name: "Scripture Reading",
name: "Ready Set",
name: "Career Readings",
name: "Reading-Berks"
我将 queryValue 作为 "read" 传递,但我无法根据值进行排序。
IOrderedEnumerable<string> name = result.Select(x => x.name)
.OrderBy(i => i.StartsWith(queryValue));
预期输出,
name: "Ready Set",
name: "Reading-Berks"
name: "Bible Reading",
name: "Scripture Reading",
name: "Career Readings",
我认为这是区分大小写的问题。
替换
.OrderBy(i => i.StartsWith(queryValue));
和
.OrderByDescending(i => i.StartsWith(queryValue, StringComparison.InvariantCultureIgnoreCase));
因为 "Ready Set".StartsWith("read")
会 return false
您必须使用 OrderByDescending
和不区分大小写的比较来获得所需的结果,因此您的查询将如下所示:
IOrderedEnumerable<string> name = result.Select(x => x.name)
.OrderByDescending(i =>i.StartsWith(queryValue,StringComparison.InvariantCultureIgnoreCase));
这里有一个 working example 可以区分 OrderByDescending
和 OrderBy
这个例子