我们有一个包含国家名称的列表。我们需要从列表B/W中找到两个字母的国家名称。如名称以B/w A-G开头的所有国家/地区的名称等。我们创建了以下linq查询,但它的丑陋。
var countryAG = from elements in countryList
where elements.StartsWith("A") ||
elements.StartsWith("B") ||
elements.StartsWith("C") ||
elements.StartsWith("D") ||
elements.StartsWith("E") ||
elements.StartsWith("F") ||
elements.StartsWith("G") ||
elements.StartsWith("H")
select elements;
CountryList在C#中创建
List< string> countryList = new List< string>();
有什么帮助或其他有效的方法来完成上述任务?
8条答案
按热度按时间m3eecexj1#
字符实际上只是数字,因此可以将它们作为数字进行比较
jk9hmnmh2#
我现在没法测试但我会试试
wfveoks03#
您可以使用前缀列表,然后使用前缀列表进行比较-这样,您可以根据您感兴趣的范围轻松使用不同的前缀列表:
r6hnlfcb4#
尝试
有关
IndexOfAny
的信息,请参见here。lxkprmvk5#
尝试使用此代码:
例如,“start”和“end”是静态的。
n6lpvg4x6#
我有两个扩展函数:
它创建了一系列字符,并且
它只是
Contains
的反数,主要是为了可读性。我们可以一起做:
where elements[0].In(Range('a', 'f')))
yvfmudvl7#
yrdbyhpb8#
两种根据字符串首字母过滤列表的方法:
list = list.Where(x => x.WordText.ToUpper().StartsWith(Character));
list = list.Where(x => Regex.IsMatch(x.WordText.ToUpper().Substring(0, 1), Character));