我有一个存储过程:
ALTER PROCEDURE [dbo].[GetAllAnnouncements]
AS
BEGIN
SELECT
Description, DisplayStartDate, DisplayEndDate
FROM
Announcements
END
我试图调用存储过程并将其作为数组返回,但是我收到错误:
无法隐式将MyProject.Models.GetAllAnnouncements_Result []类型转换为字符串[]
我的代码:
public string[] getAllAnnouncements()
{
using (PerformanceReviewEntities objContext = new PerformanceReviewEntities())
{
var ann = objContext.GetAllAnnouncements();
string[] DisplayAnn = ann.ToArray();
}
}
我知道它必须在编辑功能导入中执行某些操作,但我不知道该怎么做。我希望能够从家庭控制器运行,并在我的.cshtml页面中查看它。
答案 0 :(得分:1)
函数import返回Announcements
类型的对象集合。
当你这样称呼时:
var ann = objContext.GetAllAnnouncements();
ann
是对象的集合,而不是字符串。
这样做:
string[] DisplayAnn = ann.ToArray();
Wil失败了,因为你试图将一个对象数组分配给一个字符串数组。
您可以这样做,假设您对多个列感兴趣:
IEnumerable<Announcements> result = ann.ToArray();
并更改方法的签名以返回可枚举:
public IEnumerable<Announcements> getAllAnnouncements()
调用ToArray()以强制加载结果。如果lazing加载适合您,则不必将其投射到阵列中。有些人在关闭数据库连接后尝试使用枚举时会遇到麻烦(例如上下文已被处理)。