Asp.net mvc 3 使用ASP.NET MVC3在相关表中搜索

Asp.net mvc 3 使用ASP.NET MVC3在相关表中搜索,asp.net-mvc-3,linq,Asp.net Mvc 3,Linq,这是我的(简化)代码: 控制器 var query = from f in _db.Firms where f.Name.ToLower().Contains(search.ToLower()) || f.Keyword.ToLower().Contains(search.ToLower()) || f.KeywordList.ToLower().Contains(search.ToLower()) select f; 用户模型 public

这是我的(简化)代码:

控制器

var query = from f in _db.Firms
    where f.Name.ToLower().Contains(search.ToLower()) 
        || f.Keyword.ToLower().Contains(search.ToLower()) 
        || f.KeywordList.ToLower().Contains(search.ToLower())
    select f;
用户模型

public class User
{
    [Key]
    public int ID { get; set; }

    public string Username { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public int FirmID { get; set; }
    [ForeignKey("FirmID")] 
    public virtual Firm Firm { get; set; }
}
public class Firm
{
    [Key]
    public int ID { get; set; }

    public string Keyword { get; set; }
    public string KeywordList { get; set; }
    public string Name { get; set; }

    public virtual ICollection<User> Users { get; set; }
}
公司模式

public class User
{
    [Key]
    public int ID { get; set; }

    public string Username { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public int FirmID { get; set; }
    [ForeignKey("FirmID")] 
    public virtual Firm Firm { get; set; }
}
public class Firm
{
    [Key]
    public int ID { get; set; }

    public string Keyword { get; set; }
    public string KeywordList { get; set; }
    public string Name { get; set; }

    public virtual ICollection<User> Users { get; set; }
}
使用连接

from firm in _db.Firms
join user in _db.Users on firm.FirmId equals _db.Firm.FirmId
where f.Name.Equals(...) && user.Name.Equals(...) // any other qualifications
select firm; 

啊,太简单了!非常感谢你。我一直认为,当我使用一个join时,我必须为select创建一个新对象,因为在视图中,我需要所有用户信息,而不仅仅是来自公司的信息。但由于公司模型已经包含了一个包含所有用户的列表,所以情况并非如此(我猜)。