将会话转换为int以进行linq查询

时间:2015-11-15 15:04:06

标签: c# asp.net linq session

我试图从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,但它们都给出了相同的结果。

2 个答案:

答案 0 :(得分:1)

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.

答案 1 :(得分:1)

您需要将解析移到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);