下面是我正在使用的代码,但它回复了
Method 'Boolean isUser(System.String)' has no supported translation to SQL.
有什么帮助吗?顺便说一句,我正在使用 linq to SQL 数据源
public void dataBind()
{
using (var gp = new GreatPlainsDataContext())
{
var emp = from x in gp.Employees
let k = isUser(x.ID)
where x.ActivtyStatus == 0
&& isUser(x.ID) != false
orderby x.ID
select new
{
ID = x.ID,
Name = x.FirstName + " " + x.MiddleName
};
ListView1.DataSource = emp;
ListView1.DataBind();
}
}
public static bool isUser(string ID)
{
int temp;
bool x = int.TryParse(ID, out temp);
return x;
}
我找到了一个将第一个查询的结果作为对象查询的解决方案,但这是一个很好的理由,我将两次传递我的数据。
按照 Anders Abel 的建议,更新后的代码最终可以正常工作
public void dataBind()
{
using (var gp = new GreatPlainsDataContext())
{
var emp = from x in gp.Employees
where x.ActivtyStatus == 0
&& SqlMethods.Like(x.ID, "[0-9]%")
orderby x.ID
select new
{
ID = x.ID,
Name = x.FirstName + " " + x.MiddleName
};
ListView1.DataSource = emp;
ListView1.DataBind();
}
}
最佳答案
Linq-to-sql 将查询转换为 SQL。它只知道如何翻译一组有限的内置函数。您必须重写查询以不包含您自己的函数。
可以在 MSDN 找到 linq-to-sql 支持的函数和运算符的完整列表。 .
您可以使用 SqlMethods.Like()
来检查字段是否只包含数字。参见 T-SQL IsNumeric() and Linq-to-SQL举个例子。
关于c# - 试图在 linq 语句的位置调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8816691/