我有以下T-SQL工作:
SELECT * INTO #visibleTasks FROM [#allTasks]
WHERE [dbo].[func_GetTaskVisibility](taskId, state) = 1
我用100的TASKS传递临时表,并对所有TASKS运行函数func_GetTaskVisibility。
该函数然后检查几个要求,对于每个#allTask,它返回1表示好,0表示坏。
我收集了所有的return = 1并放入一个名为#visibleTasks的新临时表。
如何在LINQ中进行相同的调用?
非工作代码
var visible = ( from f in allTasks
select new {
// to lookup foreach and return clean
visibleTasks = func_GetTaskVisibility(taskId,state) = 1
}
).ToList();
答案 0 :(得分:1)
好吧,SELECT INTO
用于插入数据,Linq不是为此设计的,但查询部分将是:
var visible = ( from f in allTasks
// to lookup foreach and return clean
where func_GetTaskVisibility(taskId,state) = 1
select f
).ToList();
答案 1 :(得分:0)
var visible = ( from f in allTasks
// to lookup foreach and return clean
where MyDbContext.func_GetTaskVisibility(f.taskId,f.state) == 1
select f
).ToList();
如果您正在使用Linq2SQL设计器,您可以将您的函数放入dbml,就像您的表或存储过程一样,然后在linq中调用它,它将正确生成tsql < / p>
答案 2 :(得分:0)
你需要经历两个步骤,因为sql函数不能在某个地方的LINQ to SQL查询中使用。
因此你必须经历两个步骤,如::
var Tasks = ( from f in allTasks
select new {
ID=TaskID,
State=TaskState,
VisibleTask=0;
}
).ToList();
for(int i=0;i<tasks.length;i++)
{
Tasks[i].VisibleTask= dataContext.func_GetTaskVisibility(Tasks[i].ID,Tasks[i].State)
}