.NET动态搜索功能

时间:2016-06-02 18:24:24

标签: c# .net linq search dynamic

我正在尝试创建一个搜索函数,该函数将从数据库中读取以查看多个列,并在所有关键字(由空格分隔)已被使用时返回。

目前我有一些很长的路线

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中是可行的还是我需要在外部循环它?

1 个答案:

答案 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));
    });