我写了一个存储过程: -
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
我通过实体框架使用了这个程序: -
List<Int32>lst=context.GET_USERSTORYDATA_EXISTS(MyWizardUserStoryId,ProjectId,storyTitle);
但它给了我错误: -
Can not implicitly convert type 'ObjectResult<int?>' to List<int>
答案 0 :(得分:6)
由于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();
答案 1 :(得分:1)
要将对象结果转换为列表,我要添加一个ToList(),但在您的情况下,我不认为它会起作用,因为您只返回一个整数来自存储过程。
答案 2 :(得分:-3)
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);
}