简体   繁体   English

转换ObjectResult <int?> 进入清单 <int>

[英]Convert ObjectResult<int?> into List<int>

I have written a stored procedure :- 我写了一个存储过程:

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

I have consumed this procedure via Entity framework :- 我已经通过实体框架使用了此过程:

List<Int32>lst=context.GET_USERSTORYDATA_EXISTS(MyWizardUserStoryId,ProjectId,storyTitle);

but its giving me error:- 但它给我错误:-

Can not implicitly convert type 'ObjectResult<int?>' to List<int>

Since ObjectResult<T> implements IEnumerable<T> you can use ToList . 由于ObjectResult<T>实现IEnumerable<T> ,因此可以使用ToList However, you also need to convert from nullable int. 但是,您还需要从可为null的int转换。 Easiest way would be to project using a Linq Select and then ToList . 最简单的方法是使用Linq Select然后使用ToList进行投影。 This code will replace any null values with zero: 此代码将用零替换任何空值:

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

要将对象结果转换为列表,我将添加ToList(),但是在您的情况下,我认为它不起作用,因为您只从存储过程中返回了一个整数。

List<Int32?> list1 =new List<int?>() { 1, null, 2 };
                List<Int32> list2 = new List<int>();
                foreach (var item in list1)
                {
                    if (item.HasValue)
                        list2.Add(item.Value);
                }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM