2012-03-02 55 views
1

我有以下方法创建:LINQ - 不能与WHERE条件

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

回答

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

或有条件的地方添加到查询

3

这应该是

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