这是我的LINQ查询(LINQ到SQL):
pagina = (from Pagine page in kDataBase.Pagines
where prova(page.title_it) == urlSuddivisa[i].ToLower()
select page).FirstOrDefault();
这也是我函数调用(同一类中):
private string prova(string example)
{
return example;
}
它说 :
有不支持转换到SQL中为方法“System.String PROVA(System.String)。
我在哪里错了? 我该如何解决?
由于LINQ查询被转换为对你的分贝运行SQL查询它是不是能够自定义函数转换成SQL查询。
appraoaching问题的替代方法
在一个侧面说明,我猜你的方法prova
并不仅仅是返回字符串更加否则功能是完全没用的,你可能也摆脱功能。 此外,我相信你是射击多个查询到数组的数据库COS,你使用的是有一个计数器i
,你总是可以使用IN
查询,并围绕它得到的,记得元素的数量限制在IN
查询。
您的LINQ查询表达式在运行时转换成SQL和框架不知道如何PROVA方法调用转换成相应的SQL。 相反,你可以这样做:
pagina = (from Pagine page in kDataBase.Pagines select page).ToList().Where(p => prova(p.title_it) == urlSuddivisa[i].ToLower()).FirstOrDefault();
这将首先通过toList,其中PROVA方法然后可以评价拉页到存储器中。
随着linq to sql
的Expression tree
得到解析,SQL查询,而不是仅仅运行它喜欢它是linq to objects
。
你的ORM提供者不知道烫法转换为SQL。
你不应该使用的方法linq to SQL
LINQ
查询。