如何对字符串进行排序,以便首先以搜索词开头的字符串?

Kyl*_*yle 2 c# sorting search

我有一个很大的字符串列表.我目前通过做一个搜索来处理搜索

.Where(x => x.Contains(search)).ToArray()
Run Code Online (Sandbox Code Playgroud)

这得到了我想要的所有结果,但顺序很差.例如,搜索"ch"可能会出现:

Potato Starch
Chicken
Run Code Online (Sandbox Code Playgroud)

因为它们都包含ch,所以我希望它们都能显示出来,但我希望Chicken在数组中排在第一位,因为它以ch开头.

有什么方法可以重新排序我的结果,所以以搜索字符串开头的字符串是在数组的开头?

Mik*_*ray 8

您可以通过索引进行排序,从而在开头使用搜索开头的字符串:

.Where(x => x.Contains(search)).OrderBy(x => x.IndexOf(search)).ToArray()
Run Code Online (Sandbox Code Playgroud)