c# - LINQ - 无法使用 WHERE 条件创建

标签 c# linq asp.net-mvc-3

我有以下方法:

    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 proeprty 的实体。

    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 属性的实体(又名不为空)。

最佳答案

where (geoArea == null) || i.GeographicalAreas.Any(p => p.GeoAreaID == geoArea)

或有条件地将where添加到查询中

关于c# - LINQ - 无法使用 WHERE 条件创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533673/

相关文章:

asp.net-mvc-3 - 如果为空,则 webgrid 内的自定义消息

c# - 使用C#通过RS232发送数据

c# - 如何在linq to sql中分组?

c# - 具有动态排序依据的 LINQ 查询

c# - 当表没有主键时使用 DeleteAllOnSubmit

asp.net-mvc - MVC3 部署依赖问题

c# - asp.net RegularExpressionValidator 和复杂的正则表达式(区分大小写的开关)

c# - C# 中带有 FileSystemWatcher 的 Windows 服务

c# - 我需要什么来为这个游戏创建这个控件? (像管道)

javascript - 用 MVC3 knockout : Knockout Model won't post collection data?