我正在尝试创建一个搜索函数,该函数将从数据库中读取以查看多个列,并在所有关键字(由空格分隔)已被使用时返回。
目前我有一些很长的路线
db.Persons.Where(
q=>
(keywords.Count() > 0)
||
(
keywords.Any(k => k.firstName.ToUpper().Contains(k)
||
keywords.Any(k => k.lastName.ToUpper().Contains(k)
||
keywords.Any(k => k.address.ToUpper().Contains(k)
)
)
但是,我希望确保每个关键字至少包含一列。这在LINQ中是可行的还是我需要在外部循环它?
答案 0 :(得分:3)
如下:
db.Persons.Where(q =>
{
string[] values = new string[] { q.firstName, q.lastName, q.address };
return keywords.All(k => values.Any(v => v.ToUpper().Contains(k));
});