Я хочу привлечь пользователей из разных стран для своего приложения. Я использовал для этого следующий код. Теперь я хочу показать всем пользователям, имеет ли continentId значение null. Как я могу этого добиться?

public async Task<IEnumerable<User>> GetUsersByContinent(int? continentId)
{
     var users = await _context.Users
            .Include(u => u.Country).ThenInclude(c => c.Continent)
            .Where(u => u.Country.ContinentId == continentId)
            .OrderBy(u => u.Username)
            .ToListAsync();

    return users;
}
1
Shashika 14 Мар 2018 в 09:05

2 ответа

Лучший ответ

Вы можете использовать цепочку методов для решения вашей проблемы.

public async Task<IEnumerable<User>> GetUsersByContinent(int? continentId)
{
     var baseQuery= _context.Users.Include(u => u.Country).ThenInclude(c => c.Continent);

     if (continentId.HasValue){
         baseQuery = baseQuery.Where(u => u.Country.ContinentId == continentId)
     }

     return await baseQuery.OrderBy(u => u.Username).ToListAsync();
}
1
Jehof 14 Мар 2018 в 06:09

Я бы, наверное, использовал решение @Jehof, но стоит упомянуть альтернативное решение.

.Where(u => continentId == null || u.Country.ContinentId == continentId)
1
Orel Eraki 14 Мар 2018 в 06:12