在Linq过滤条件

时间:2018-03-14 06:05:30

标签: c# linq

我希望基于非洲大陆的用户获取我的应用程序。我使用了以下代码。现在我想显示所有用户,如果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;
}

2 个答案:

答案 0 :(得分:1)

您可以使用使用方法链来解决您的问题。

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 :(得分:1)

我可能会使用@Jehof解决方案,但值得一提的是替代解决方案。

Method