LINQ - не может создать с условием WHERE - PullRequest
1 голос
/ 02 марта 2012

У меня есть следующий метод:

    public DataTable.DataTablesPage<DataTable.UserModel> DataTableUserListByAttendees(int geoArea, int CurrentUserID)
    {
        var result = from i in _dbContext.Users
                     where i.GeographicalAreas.Any(p => p.GeoAreaID == geoArea)
                     select new DataTable.UserModel()
                     {
                         ID = i.ID,
                         Company = i.Company,
                         DCMember = (i.UserId != null),
                         FirstName = i.FirstName,
                         LastName = i.LastName
                     };

}

он работает нормально, но возвращает сущности, для которых не установлено значение geoArea.

    public DataTable.DataTablesPage<DataTable.UserModel> DataTableUserListByAttendees(int? geoArea, int CurrentUserID)
    {
        var result = from i in _dbContext.Users
                     where i.GeographicalAreas.Any(p => p.GeoAreaID == geoArea)
                     select new DataTable.UserModel()
                     {
                         ID = i.ID,
                         Company = i.Company,
                         DCMember = (i.UserId != null),
                         FirstName = i.FirstName,
                         LastName = i.LastName
                     };

}

Как изменить запрос, чтобы он возвращал только те объекты, для которых установлено свойство geoArea (иначе не ноль).

Ответы [ 2 ]

4 голосов
/ 02 марта 2012
where (geoArea == null) || i.GeographicalAreas.Any(p => p.GeoAreaID == geoArea)

или условно добавить где к запросу

3 голосов
/ 02 марта 2012

Это должно быть

where geoArea == null || i.GeographicalAreas.Any(p => p.GeoAreaID == (int)geoArea)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...