We have a list containing names of countries. We need to find names of countries from list b/w two letters. Like names of all countries with name starting b/w A-G and so on. We create following linq query but its ugly.
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;
where countryList is created in C#
List< string> countryList = new List< string>();
Any help or any other efficient way to accomplish above task?
var countryAG = from elements in countryList
where elements[0] >= 'A' && elements[0] <= 'H'
select elements;
Chars are just numbers really, thus you can compare them as such
I can't test it right now, but I would try
countryList.Where((s) => s[0] <= 'A' && s[0] >= 'G');
You could use a prefix list and then use the prefix list for comparison - this way you can easily use different prefix lists based on what range you are interested in:
List<string> prefixList = new List<string>() { "A", "B", "C", "D", "E", "F", "G" };
var countryAG = countryList.Where( x=> prefixList.Any( p => x.StartsWith(p)));
Try
char[] startingLetters = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
var countryAG =
from elements in countryList
where elements.IndexOfAny(startingLetters, 0, 1) == 0
select elements;
See here for information on IndexOfAny
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With