LINQ to Entities не распознает метод метода System.Object get_Item (System.String) - PullRequest
2 голосов
/ 28 марта 2019

При попытке вывести данные в представление я получаю следующую ошибку.LINQ to Entities не распознает метод метода System.Object get_Item (System.String), и этот метод нельзя преобразовать в выражение хранилища.

Код контроллера:

public ActionResult Index()
            {
                return View(ReturnResults());
            }

public IQueryable<ShippingRequest> ReturnResults()
        {
            RatesModel db = new RatesModel();

            IQueryable<ShippingRequest> response = db.ShippingRequests;

            var results = response
                .Where(r => r.UserId == (int)Session["UserId"]);

            return results;
        }

Просмотреть код:

@model IEnumerable<ShippingRatesApp.Models.ShippingRequest>

@{
    ViewBag.Title = "Get Rates";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h3>Shipping Rates</h3>
@{ 
<table>
    @foreach (var rate in Model)
    {
        <tr>
            <td>@rate.ShipRate</td>
        </tr>
    }
</table>
}

Я очень плохо знаком с c #, и ни один из поисковых запросов в Интернете, с которыми я сталкивался, не решил мою проблему.Может кто-нибудь помочь мне разобраться?Спасибо!

1 Ответ

2 голосов
/ 28 марта 2019

Это означает, что он не может перевести Session["UserId"] в SQL (он недостаточно умен, чтобы извлечь значение из коллекции).Я бы рекомендовал сохранить это значение перед использованием:

var currentUserId = (int)Session["UserId"];
var results = response
            .Where(r => r.UserId == currentUserId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...