Используйте последний метод, где условие в LinQ to Entity - PullRequest
0 голосов
/ 14 марта 2012

посмотрите на этот код

IQueryable<Request> RequestsTotal = DataContext.Requests;
RequestsTotal = RequestsTotal.Where(rec =>
    rec.RequestTransactions.Last().ServerStatusId != 0);

во время выполнения этого кода, произошла ошибка об использовании Last Method в условии Where.Как я могу решить эту проблему?!

ОБНОВЛЕНИЕ1 : это произошла ошибка:

LINQ для сущностей не распознает метод', и этот метод не может быть преобразован в выражение хранилища.

UPDATE2 : у меня есть таблица Request, и эта таблица имеет отношение один ко многимдо RequestTransactions таблицы.По этому коду я попытался получить все requests, которые не имеют ServerStatusId = 0 при последнем перекодировании его введенного кода здесь RequestTransactions. Есть ли другой способ?

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Попробуйте поместить свой метод Last () вне где:

Request newResult =
    RequestsTotal
        .Where(rec => rec.RequestTransactions.ServerStatusId != 0)
        .Last();

Last также выполнит запрос и вернет один объект Request, а не IQueryable.Поэтому вы не можете повторно использовать 'RequestsTotal' для результата.

0 голосов
/ 14 марта 2012

Я изменяю свой код следующим образом:

IQueryable<Request> RequestsTotal = DataContext.Requests;
List<Request> temp = new List<Request>();
foreach (Request request in RequestsTotal)
                {

                    RequestTransaction last = request.RequestTransactions.LastOrDefault();

                    if (last != null && last.ServerStatusId != 0)
                        temp.Add(request);

                }

                RequestsTotal = temp.AsQueryable();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...