将ObjectResult <int?>转换为List <int>

C S*_*per 1 .net c# entity-framework asp.net-web-api

我写了一个存储过程: -

CREATE PROCEDURE GET_USERSTORYDATA_EXISTS
    @MyWizardUserStoryId INT
   ,@ProjectId INT
   ,@StoryTitle NVARCHAR(MAX)
AS
BEGIN
    SET NOCOUNT ON;
    IF EXISTS (SELECT 1 FROM USERSTORY WHERE [MyWizardUserStoryId]=@MyWizardUserStoryId AND ProjectId=@ProjectId)
    BEGIN
        IF EXISTS (SELECT 1 FROM USERSTORY WHERE [MyWizardUserStoryId]=@MyWizardUserStoryId AND ProjectId=@ProjectId AND Title=@StoryTitle)
        BEGIN
            SELECT 0;
        END
        ELSE
         BEGIN
            SELECT 1;
        END
    END
    ELSE
         BEGIN
            SELECT 1;
        END

END
GO
Run Code Online (Sandbox Code Playgroud)

我通过Entity框架使用了这个程序: -

List<Int32>lst=context.GET_USERSTORYDATA_EXISTS(MyWizardUserStoryId,ProjectId,storyTitle);
Run Code Online (Sandbox Code Playgroud)

但它给我的错误: -

Can not implicitly convert type 'ObjectResult<int?>' to List<int>
Run Code Online (Sandbox Code Playgroud)

Dav*_*idG 7

由于ObjectResult<T>工具IEnumerable<T>可以使用ToList.但是,您还需要从nullable int转换.最简单的方法是使用Linq Select然后进行项目ToList.此代码将使用零替换任何空值:

List<Int32> lst = context
    .GET_USERSTORYDATA_EXISTS(MyWizardUserStoryId, ProjectId, storyTitle)
    .Select(i => i.GetValueOrDefault(0))
    .ToList();
Run Code Online (Sandbox Code Playgroud)