2014-04-27 146 views
1

我有一个搜索框,我想根据TicketID返回结果。然而,当试图将TicketID转换为字符串比较它针对搜索词串,我收到此错误...LINQ to Entities无法识别方法'System.String ToString(Int32)'方法

这里是我的方法:

public ActionResult Autocomplete(Ticket ticket, string term) 
{ 
    var searchTickets = db.Tickets 
     .Where(t => t.StatusID != 3 && 
      Convert.ToString(t.TicketID).StartsWith(term)) 
     .Take(10) 
     .Select(t => new 
     { 
      label = t.Summary 
     }); 

    return Json(searchTickets, JsonRequestBehavior.AllowGet); 
} 

我已经试过类似的帖子其他建议如SqlFunctions.StringConvert()扩展方法,但是,这将引发一个语法错误之前项目甚至建...

任何指导将不胜感激。

+1

你应该使用'SqlFunctions'的确,你试过了什么? – haim770

+0

[LINQ to Entities可能重复无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储表达式](http://stackoverflow.com/questions/5899683/linq-to -entities-does-not-recognized-the-method-system-string-tostring-method) –

回答

2

尝试这样的:

Using System.Data.Objects.SqlClient; 


var searchTickets = db.Tickets 
     .Where(t => t.StatusID != 3 && 
      SqlFunctions.StringConvert((double)t.TicketID).StartsWith(term) 
     .Take(10) 
     .Select(t => new 
     { 
      label = t.Summary 
     }); 

随着EF 4您可以使用SqlFunctions.StringConvertint没有超载,因此您需要投射到doubledecimal

+0

我意识到为什么这种方法不适合我,这是我第一次尝试它!我错过了使用语句 使用System.Data.Objects.SqlClient; 感谢您的帮助! – Tomuke

+0

所以它适合你.. :) –

+0

是的,现在工作正常,我只需要包括正确的使用语句:D – Tomuke

相关问题