Mam następującą metodę:

    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
                     };

}

Działa dobrze, ale zwraca jednostki, które nie mają ustawionej właściwości 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
                     };

}

Jak mogę zmienić zapytanie, aby zwracało tylko jednostki, które mają ustawioną właściwość geoArea (czyli nie jest null).

1
John 2 marzec 2012, 16:55

2 odpowiedzi

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

Lub warunkowo dodaj gdzie do zapytania

4
Kris Ivanov 2 marzec 2012, 16:58

To powinno być

where geoArea == null || i.GeographicalAreas.Any(p => p.GeoAreaID == (int)geoArea)
3
edeboursetty 2 marzec 2012, 16:58