如何使用 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 可以区分 OrderByDescendingOrderBy 这个例子