将会话转换为linq查询的int

本文关键字:查询 int linq 会话 转换 | 更新日期: 2023-09-27 18:21:55

我试图用where条件从数据库中获取大量变量,但我遇到了类似的错误

"LINQ to Entities无法识别方法"Int32分析(System.String)"方法"。

这是我的代码:

var tickets = (from a in user.TicketTable where a.HandlerId == int.Parse(Session["emp"].ToString()) && a.Done == true select a.TicketId);
int count = 0;
foreach (var n in tickets) 
{
 count++;
}
lblDone.Text = count.ToString();

我尝试了其他方法将会话转换为int,但它们都给出了相同的结果。

将会话转换为linq查询的int

您需要将解析移到Linq-to-Entities查询之外,例如

var emp =int.Parse(Session["emp"].ToString()) ;
var tickets = (from a in user.TicketTable where a.HandlerId == emp &&
 a.Done == true select a.TicketId);

int.Parse无法转换为t-SQL,Linq to Entities无法识别它。您可以如下修改代码(将解析函数移出表达式):

int emp = int.Parse(Session["emp"].ToString());
var tickets = (from a in user.TicketTable where a.HandlerId == emp &&
                a.Done == true 
                select a.TicketId);

也可以看看这个链接可能有用:How to resolve: LINQ to Entities does not recognize the method int.Parse.