Esraa_92 Esraa_92 - 2 months ago 7
Vb.net Question

How can I get the items from a list of string that contain a determinate string value in asp.net?

I have this list:

Spain_Finance
France_Sport
Spain_Politics
USA_Science
USA_Finance


I use this code to check if the list contains a determinate value:

Dim namecountry As String = "Spain"
Dim listcontainscountry As Boolean = mylistofcountries.Any(Function(l) l.Contains(namecountry))
If listcontainscountry = True Then
' Here I need to get the elements from the list that contains Spain
End If


So after doing this inside the if statement I need to get the elements from the list that contains Spain
The result will be this:

Spain_Finance
Spain_Politics


I looking for a simple code to do this, I can do a foreach and compare the name from country with the item list, but I want to know is there another way more simple, this is for learn, I appreciate your contribution, thanks

Answer

You can use Where instead for Any so the code will be like the following:

Dim namecountry As String = "Spain"
Dim listcontainscountry = mylistofcountries.Where(Function(l) l.Contains(namecountry)).ToList()

Since the question is tagged to c# also, this Example will help you, that is the code will be :

List<string> countryList = new List<string>() { "Spain_Finance", "France_Sport", "Spain_Politics", "USA_Science", "USA_Finance" };
string namecountry = "Spain";
List<string> SelectedCountries = countryList.Where(x => x.Contains(namecountry)).ToList();
if(SelectedCountries.Count>0) 
   Console.WriteLine("Selected Countries : {0}", String.Join(",",SelectedCountries));
else
   Console.WriteLine("No Matches ware found");

update: You can use Select followed by Where and .SubString the code will be like this

List<string> SelectedCountries = countryList.Where(x => x.Contains(namecountry))
                                                         .Select(x=>x.Substring(x.IndexOf("_")+1))
                                                         .ToList();