如何使用where子句并检查字符串变量是否包含在许多表列中

时间:2015-03-03 09:28:06

标签: c# entity-framework

我已经创建了一个方法来检查当前表的名称列中是否包含名称值,但是我还需要查看该名称是否包含在许多表中的另一列(TABLE.Project)中。

TABLE.Customer 1 --- *(many) TABLE.Project(Which have column named "Name")

这是方法:

Public List<SearchObject> Finditem(string name)
{
    var query = from o in db.tbl_Custommer
                where o.Name.Contains(name)
                select new SearchObject
                {
                    Url = o.tbl_Webs.WebUrlName,
                    Name = o.Name,
                };
    return query.ToList();
}

我是否需要遍历每个o.Project

任何形式的帮助都很受欢迎!

1 个答案:

答案 0 :(得分:1)

假设您正确设置了关系并且其名为Projects,那么您可以使用any - 即返回名称与name匹配的客户,并且他们至少有一个名称也匹配的项目:

var query = from o in db.tbl_Custommer
                   where o.Name.Contains(name) && o.Projects.Any(p => p.Name.Contains(name))
                   select new SearchObject
                   {
                       Url = o.tbl_Webs.WebUrlName,
                       Name = o.Name,
                   };