搜索列表 FirstOrDefault StartsWith fuzzy

Search List FirstOrDefault StartsWith fuzzy

如果我使用以下代码,我会找到一个以“X”开头的 Item.ShowName – 如果存在的话。

List<Artist> myList = new List<Artist>();
//Fill list with items
Artist Item = myList.FirstOrDefault(x => x.StartsWith("X"));

我的问题是没有 Item.ShowName 以“X”开头。在那种情况下,我想要最接近的匹配项,即列表中以“Y”开头的第一个项目或以“W”开头的最后一个项目。 显然我可以枚举整个列表,但这可能会很慢。什么是快速获得结果的方法?

您可以使用以下小技巧:

Artist Item = myList.Where(s => !String.IsNullOrEmpty(s))
                    .OrderBy(x => Math.Abs(x[0] - (int)'X')).FirstOrDefault();

将'X'和x的第一个字符转换为整数,按差的绝对值排序。