2014-09-12 27 views
0

已经尝试了本我如何加入参数化存储过程与LINQ表C#

var Result = from a in db.ViewEntity // view 
let b = db.sp_Get_log(a.id) // parametrized stored procedure returns rowset 
select new LogFields 
{ 
    UniqueID = a.ID, 
    WorkFlow_Status = a.Document_Status, 
    Creator = a.Creator, 
    Duration = a.Duration, 
    Approver = b.LastOrDefault().Action_User // this 
}; 

但我收到此错误,请帮助。

LINQ实体无法识别方法System.Data.Objects.ObjectResult1 [db.Agent.sp_Get_log_Fields] sp_Get_log(System.String)”方法,和这种方法不能被翻译成表达商店。

回答

1

首先得到的结果在内存中,然后调用存储过程是这样的:

var ResultList = db.ViewEntity.ToList(); 

var Result = from a in ResultList 
let b = db.sp_Get_log(a.id) // parametrized store procedure returns rowset 
select new LogFields 
{ 
    UniqueID = a.ID, 
    WorkFlow_Status = a.Document_Status, 
    Creator = a.Creator, 
    Duration = a.Duration, 
    Approver = b.LastOrDefault().Action_User // this 
}; 
+0

**我得到这个错误**,这“让”类型的表达式的条款是不正确。 – 2014-09-12 13:05:01

+0

我认为基本的问题是,它不能在单个SQL语句中完成,更不用说在LINQ中。我试着将LastORDefault()移动到'let'行。 – 2014-09-12 14:13:34