Мне нравится использовать регулярные выражения и делать это, например, для собак:
var animals = new List<string>()
{ "japanese dog", "spanish dog", "english cat", "french cat" };
var dogs = animals.Where(type => Regex.IsMatch(type, "dog", RegexOptions.IgnoreCase))
.ToList();
// Returns {"japanese dog", "spanish dog" }
Почему вы можете спросить Regex, потому что он гибкий и мощный ... позвольте мне показать:
Позвольте нам продвинуться вперед в linq, отсортировав их с использованием расширения ToLookup
и регулярных выражений, таких как
var sortedbyDogs
= animals.ToLookup(type => Regex.IsMatch(type, "dog", RegexOptions.IgnoreCase));
, который сгруппирован в памяти следующим образом:
![To lookup grouping result](https://i.stack.imgur.com/BIBlM.png)
Тогда просто извлеките кошек, таких как
var cats = sortedbyDogs[false].ToList()
![List string of cats](https://i.stack.imgur.com/1MUqJ.png)
затем введите true
для собак.
Но зачем разделять его на логическое, что если есть еще животные? Давайте добавим лемура в список, например … "french cat", "Columbian Lemur" };
, мы делаем это:
var sorted = animals.ToLookup(type => Regex.Match(type,
"(dog|cat|lemur)",
RegexOptions.IgnoreCase).Value);
![enter image description here](https://i.stack.imgur.com/oizxH.png)
Тогда, чтобы получить наших кошек, вот код:
sorted["cat"].ToList()