问题
is there any way to evaluate if a string contains some of the elements of a list or all the elements of the list? using linq to entities?
i have been trying to use predicateBuilder and others but im not %100 into thoses.
EDIT
something like:
string[] words = searchString.Split(' ');
var resultado = db.users
.Where(u => u.fullName.contains(words) )
.Select(s => new { user_id = s.id_user, nombre = s.fullName})
.ToList();
回答1:
You need to reverse your use of Contains
to check the words
collection for the fullName
:
string[] words = searchString.Split(' ');
var resultado = db.users
.Where(u => words.Contains(u.fullName))
.Select(s => new { user_id = s.id_user, nombre = s.fullName})
.ToList();
That will match one item in the words
array.
To match all of words
in a user's fullName
, use All
:
var resultado = db.users
.Where(u => words.All(w => u.fullName.Contains(w))
.Select(s => new { user_id = s.id_user, nombre = s.fullName})
.ToList();
回答2:
It's better to do with intersect
IEnumerable<string> first = ...;
IEnumerable<string> second= ...;
var duplicates = first.Intersect(second);
and doest contains
bool contains = duplicates.Any();
来源:https://stackoverflow.com/questions/16816820/ef-linq-lambda-containsliststring