LINQ to Entities无法识别方法'System.Object get_Item(System.String)'方法

问题描述 投票:2回答:1

在尝试将数据输出到视图时,我得到以下错误。 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#的新手,我遇到的网络搜索都没有解决我的问题。有人可以帮我解决这个问题吗?谢谢!

c# asp.net linq-to-entities
1个回答
2
投票

这意味着它无法将Session["UserId"]转换为SQL(它不足以将值从集合中拉出来)。我建议在使用它之前将其存储在一个值中:

var currentUserId = (int)Session["UserId"];
var results = response
            .Where(r => r.UserId == currentUserId);
© www.soinside.com 2019 - 2024. All rights reserved.