Member 11339247 Ответов: 2

Как дать несколько условий where с помощью запроса linq в MVC


Я хочу дать несколько условий where при привязке данных в mvc с помощью linq. Я пробовал, где условие такое же, как sql-запрос и другой тип также, но не работал и показывал ошибку, т. е.
The specified type member 'YearID' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.


Вот мой код, который я попробовал последним,

 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.

Я знаю, и этот вопрос почти задан в прошлый раз, но тогда и этот ответ не сработал для этого решения.

Спасибо.

Что я уже пробовал:

Я перепробовал много вещей, но ничего не получилось.

2 Ответов

Рейтинг:
1

Dave Kreskowiak

Я не знаю, где ты это взял var content линия от, но это то, что вызывает вашу проблему. В нем нет столбца YearID, только столбцы, которые вы дали ему в этом первом выборе. Вам вообще не нужна эта строка кода.

Вам просто нужен второй, слегка измененный:

public ActionResult FilterImage(int yearID, int eventID, int branchID)
{
    List<EventRegistrationViewModel> contentModel = db.eventRegistration
       .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);
}


Рейтинг:
0

F-ES Sitecore

Имеет ли EventRegistrationViewModel свойства YearID и BranchID? Вам, вероятно, нужно сделать свой выбор Where перед вашим выбором на eventRegistration direct.

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


У нас нет доступа к вашей базе данных, поэтому трудно сказать наверняка.