Linq to sql ISingleResult不包含“Single”的定义,也不包含扩展方法“Single”

Linq to sql ISingleResult不包含“Single”的定义,也不包含扩展方法“Single”,linq-to-sql,Linq To Sql,我犯了一个奇怪的错误。我的存储过程是这样的 CREATE PROCEDURE [dbo].[SaveFaq] ( @Id int , @Question nvarchar(MAX) , @Answer nvarchar(MAX) , @Status nvarchar(50) , @ModifiedBy nvarchar(50) ) AS SET NOCOUNT ON ; Declare @newId as INT if not exists(select *

我犯了一个奇怪的错误。我的存储过程是这样的

CREATE PROCEDURE [dbo].[SaveFaq] (  @Id int , @Question nvarchar(MAX) , @Answer nvarchar(MAX) , @Status nvarchar(50) , @ModifiedBy nvarchar(50)  )
AS 
    SET NOCOUNT ON ; 
    Declare @newId as INT  
    if not exists(select * from [Faq]  where [Id] = @Id)
    begin 
        INSERT into [Faq] (  [Question], [Answer], [Status], [ModifiedBy], [CreatedDate] ,  [CreatedBy] ,  [ModifiedDate] )  VALUES (   @Question, @Answer, @Status, @ModifiedBy, GETDATE() , @ModifiedBy ,  GETDATE() )
        select @newId = SCOPE_IDENTITY()
    end
    else begin  
        UPDATE [Faq] SET   [Question] = @Question, [Answer] = @Answer, [Status] = @Status, [ModifiedBy] = @ModifiedBy,  [ModifiedDate] = GETDATE()
        Where Id = @Id
        select @newId = @Id
    end   
    Select * from  [Faq] where Id = @newId
请注意,最后一个like将选择新插入的记录

public static int Save(int id, string question, string answer, WorkflowStatus status, string modifiedBy)
    {
        using (var dc = ProjectLogic.GetDataContext())
        {
            return dc.SaveFaq(id, question, answer, status.ToString(), modifiedBy).Single().Id; 
        }
    }
我犯了这样的错误

'System.Data.Linq.ISingleResult<Web.Data.DataContext.SaveFaqResult>' does not contain a definition for 'Single' and no extension method 'Single' accepting a first argument of type 'System.Data.Linq.ISingleResult<Web.Data.DataContext.SaveFaqResult>' could be found (are you missing a using directive or an assembly reference?)

很明显,我使用了错误的名称空间

用这个

using System.Linq; 
不是这个

using System.Data.Linq; 

我不知道为什么…

确实是错误的名称空间

一个名称空间是常规Linq,另一个是Linq2sql


我将尽快清理这个问题SaveFaq的返回类型是什么?IsingResult派生自IEnumerable而非IQueryable,因此您需要LINQ到对象扩展来扩展和进一步细化结果。这是有意为之的,因为存储过程不能像表和视图那样在服务器端通过进一步查询进行扩展。