#c# #linq
#c# #linq
Вопрос:
У меня есть
list<fruitObj>
Fruit
FruitName, FruitColor
banana, yellow
orange, orange
cherry, red
List<FruitObj> test = new List<FruitObj>();
Существует ли встроенный способ поиска в списке, который начинается с BAN, и просто возвращает true, если он действительно содержит строку?
Комментарии:
1. Не могли бы вы, пожалуйста, опубликовать исходный код класса FruitObj?
Ответ №1:
bool hasBAN = test.Any( x => x.FruitName.StartsWith("BAN"));
Обратите внимание, что это чувствительно к регистру, чтобы соответствовать «банану», вы могли бы сделать:
bool hasBAN = test.Any( x => x.FruitName.StartsWith("BAN", StringComparison.InvariantCultureIgnoreCase));
Ответ №2:
Это не чувствительно к регистру:
bool hasAnyBAN = test.Any(x=>x.StartsWith("BAN", StringCoparison.InvariantCultureIgnoreCase));
Ответ №3:
bool startsWithBan = test.Any(f =>
f.Name.StartsWith("ban", StringComparison.InvariantCultureIgnoreCase));
Предполагается, что Name — это свойство, содержащее название фрукта.
Ответ №4:
Здесь много предположений…
ЕСЛИ у FruitObj есть .Назовите свойство, которое может быть одним из перечисленных вами имен, вы могли бы сделать это:
list.Any(f => f.Name.StartsWith("BAN"));
Ответ №5:
test.Where(fo => fo.FruitName.ToUpper().StartsWith("BAN"));
if (test.Count(fo => fo.FruitName.ToUpper().StartsWith("BAN")) > 0)
{
//...
}
Ответ №6:
var hasBAN = test.Any(fruit => fruit.FruitName.ToUpper().StartsWith("BAN"));