Фильтрующая сущность установлена ​​с помощью лямбды - PullRequest
2 голосов
/ 12 февраля 2011

Итак, у меня есть это на сервере

public IQueryable<Pos>GetPos(int programID)
    {
        var entitySet = _posRepository.All().Where(x => x.ProgramID == programID).Include("RecPositions.Person");

        return entitySet.Where(x => x.RecPositions.Any(rp => rp.PosRank != 0));
    }

У меня есть похожие / такие же?код на клиенте.Но решил, что это должно быть сделано на сервере, поэтому я не могу вернуть тысячи записей.Я ожидаю (rp => rp.PosRank! = 0), чтобы пропустить все записи, которые имеют 0 ... но по какой-то причине это не так.Может кто-нибудь взглянуть и дать мне знать, если я что-то упустил.Опять же, я хочу, чтобы все записи PosRank, которые равны 0, не были включены в набор результатов.

1 Ответ

3 голосов
/ 12 февраля 2011

Ваш код в настоящее время включает любые объекты, которые имеют любые RecPosition с ненулевым PosRank.

Это не фильтрация RecPosition, возвращаемых в сущностях, а фильтрация их родительского типа (Pos).

если вы хотите включить только Pos-сущности, в которых all RecPositions имеют ненулевой PosRank, вам просто нужно:

return entitySet.Where(x => x.RecPositions.All(rp => rp.PosRank != 0));

Если вам действительно нужны значения RecPosition (вместо значений Pos), вам может потребоваться:

return entitySet.SelectMany(x => x.RecPositions)
                .Where(rp => rp.PosRank != 0));
...