Для localhost / wampserver 3 мы можем установить sql-mode = user_mode, чтобы удалить эту ошибку:
click on wamp icon -> MySql -> MySql Setting -> sql-mode -> user_mode
затем перезапустить wamp или apache
var result = collection.Where(item => stringsToCheck.Any(stringToCheck =>
item.Name.Contains(stringToCheck)));
Читайте на английском языке: дайте мне все элементы в коллекции, где из всех строк для проверки одного из них есть подстрока строки в коллекции.
Если вы хотите проверить, содержит ли o.Name
значение stringToCheck
, то:
var result = collection.Where( o => stringsToCheck.Any(a => o.Name.Contains(a)));
Если вам нужно проверить только на равенство, то:
var result = collection.Where( o => stringsToCheck.Contains(o.Name));
Примечание: если вам необходимо применить нормализацию кейса, тогда ToLower()
следует применять соответственно.
Вы проверяете элемент коллекции o.ToLower()
, я предполагаю, что вы должны проверить его имя o.Name.ToLower()
.
Если вы хотите проверить, содержит ли o.Name
некоторые string
из stringsToCheck
, я бы предложил использовать LinqKit и построить запрос с помощью PredicateBuilder
.
var predicate = PredicateBuilder.False<TypeOfYourObject>();
var stringsToCheck = someCommaSeparatedStrings.ToLower().Split( ',' ).ToList();
foreach(var str in stringsToCheck)
{
var tmp = str;
predicate = predicate.Or(o=> o.Name.IndexOf(tmp) != -1);
}
resultQuery = collection.Where(predicate);