搜索列表FirstOrDefault StartsWith模糊

时间:2015-01-19 10:26:35

标签: c# list fuzzy-search startswith

如果我使用以下代码,我将找到以“X”开头的Item.ShowName - 如果存在。

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

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

1 个答案:

答案 0 :(得分:3)

这是一个可以用来做的小技巧:

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

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