我有一个问题。我需要在linq中使用c#函数来执行sql请求。 例如:
void request()
{
var db = new DataClasses1(connectionString);
var result =
from a in db.Stats
where Function(a.SourceName)
select a;
}
bool Function(string sourceName)
{
return true;
}
这不起作用,因为布尔函数(字符串sourceName)无法更改为sql请求。我需要做什么才能在linq to sql中使用c#函数?
答案 0 :(得分:1)
如果无法将函数转换为linq2sql语句,则无法执行此操作,但可以避免使用非SQL函数。
最后必须要执行 sql 。
您可以做的就是避免使用下面显示的非SQL语句,
假设a是一个字符串,但你想要它是整数,
var int_a = int.Parse(a);
var result = from a in db.Stats
where a==int_a
select a;
答案 1 :(得分:1)
你的数据库不知道Function
,所以分两步完成。
void request()
{
var db = new DataClasses1(connectionString);
var result = from a in db.Stats
select a;
var finalResult = from b in a.AsEnumerable()
where Function(b.SourceName)
select b;
}
bool Function(string sourceName)
{
return true;
}
看看它是否有效
答案 2 :(得分:1)
您只需要在AsEnumerable
查询中添加linq
:
void request()
{
var db = new DataClasses1(connectionString);
var result =
from a in db.Stats.AsEnumerable()
where Function(a.SourceName)
select a;
}
bool Function(string sourceName)
{
return true;
}