如何在mvc中使用linq查询给出多个where条件

时间:2017-11-22 12:10:15

标签: asp.net-mvc linq

我想在使用linq在mvc中绑定数据时给出多个where where条件。我尝试了与sql查询和其他类型相同的条件,但没有工作并显示错误,即

  

指定的类型成员' YearID' LINQ不支持   实体。仅初始化程序,实体成员和实体导航   支持属性。

这是我最近尝试过的代码,

 public ActionResult FilterImage(int yearID, int eventID, int branchID)
{
    var content = db.eventRegistration.Select(s => new
    {
        s.EventRegistrationID,
        s.Image,
        s.IsActive
    });

    List<EventRegistrationViewModel> contentModel = content
       .Select(item => new EventRegistrationViewModel() 
       {
            EventRegistrationID = item.EventRegistrationID,
            Image = item.Image,
            IsActive = item.IsActive
       })
       .Where(c => c.IsActive == true && c.YearID == yearID && c.BranchID == branchID)
       .Take(15).ToList();

    return View(contentModel);
}

此代码不适用于多个where条件。

我知道,这个问题几乎是在上一次问到的,但是那个答案对于这个解决方案来说也没有用。

谢谢。

1 个答案:

答案 0 :(得分:1)

我不知道您在尝试什么,但解决方案位于content列表中,您必须选择YearIDBranchID,因为在where您正在使用它。

我不知道你需要所有的属性,或者不是不同的讨论,但截至目前你可以这样做

 public ActionResult FilterImage(int yearID, int eventID, int branchID)
{
    var content = db.eventRegistration.Select(s => new
    {
        s.EventRegistrationID,
        s.Image,
        s.IsActive,
        s.YearID,
        s.BranchID
    }).ToList();

    List<EventRegistrationViewModel> contentModel = content.Select(item => new EventRegistrationViewModel()
    {
        EventRegistrationID = item.EventRegistrationID,
        Image = item.Image,
        IsActive = item.IsActive
    }).Where(c => c.IsActive == true && c.YearID == yearID && c.BranchID == branchID).Take(15).ToList();

    return View(contentModel);
}