4

有什么方法可以评估一个字符串是否包含列表的某些元素或列表的所有元素?使用 linq 到实体?

我一直在尝试使用 predicateBuilder 和其他人,但我没有 %100 进入那些。

编辑

就像是:

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();
4

2 回答 2

13

您需要反转您的使用Contains来检查words集合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();

这将匹配数组中的一项。words

要匹配用户中的所有内容,请使用:wordsfullNameAll

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();
于 2013-05-29T14:49:58.550 回答
0

最好用intersect

 IEnumerable<string> first = ...;
 IEnumerable<string> second= ...;
var duplicates = first.Intersect(second);

并且不包含

bool contains = duplicates.Any();
于 2013-05-29T15:04:47.083 回答