Sql Can';无法将IsingResult转换为IEnumerable
我试图使用Linqtosql显示来自数据库的列表,但我想我弄错了 我编写了存储过程来检索数据,如果您需要更多信息: 这是我的代码:Sql Can';无法将IsingResult转换为IEnumerable,sql,list,type-conversion,ienumerable,Sql,List,Type Conversion,Ienumerable,我试图使用Linqtosql显示来自数据库的列表,但我想我弄错了 我编写了存储过程来检索数据,如果您需要更多信息: 这是我的代码: protected List<MySubject> GetSubjects(int userID, string Datetime) { userID = user_id; string[] dates = Datetime.Split('-'); int year = int.Parse
protected List<MySubject> GetSubjects(int userID, string Datetime)
{
userID = user_id;
string[] dates = Datetime.Split('-');
int year = int.Parse(dates[2]);
int month = int.Parse(dates[1]);
int day = int.Parse(dates[0]);
ClassDAO classClass = new ClassDAO();
List<MySubject> myTodaySubjects = GetSubjectsLinq(userID, day);
GetSubjectsLinq(userID, day);
return myTodaySubjects;
}
private List<MySubject> GetSubjectsLinq(int UserId, int day)
{
MySchoolDBDataContext db = new MySchoolDBDataContext();
string Suserid = UserId.ToString();
string Sday = day.ToString();
var sub = db.GetSubjects(Sday , Suserid);
return sub.ToList<MySubject>();
}
你知道我怎么修吗?检查你的电脑
db.GetSubjects(星期四,星期三)
方法(存储过程)。它看起来只返回某一类型的一个值,这意味着不能将其分配给IEnumerable
,例如列表
由于您在LINQ中使用存储过程,它将自动生成一个类T(过程名+结果),供您存储数据。返回的类型总是isingresult
因此,您可以尝试以下方法:
ISinlgeResult<MySubjectResult> sub = db.GetSubjects(Sday , Suserid);
foreach(MySubjectResult val in sub)
{
...
}
isingresult sub=db.GetSubjects(Sday,Suserid);
foreach(sub中的MySubjectResult val)
{
...
}
或者只使用db.GetSubjects(Sday,Suserid)代码>检查您的
db.GetSubjects(星期四,星期三)
方法(存储过程)。它看起来只返回某一类型的一个值,这意味着不能将其分配给IEnumerable
,例如列表
由于您在LINQ中使用存储过程,它将自动生成一个类T(过程名+结果),供您存储数据。返回的类型总是isingresult
因此,您可以尝试以下方法:
ISinlgeResult<MySubjectResult> sub = db.GetSubjects(Sday , Suserid);
foreach(MySubjectResult val in sub)
{
...
}
isingresult sub=db.GetSubjects(Sday,Suserid);
foreach(sub中的MySubjectResult val)
{
...
}
或者只使用db.GetSubjects(Sday,Suserid)代码>有许多方法可以返回存储的过程结果。。。见下文
公共数据上下文
//假设Json返回
public JsonResult GetResults(string param1, string param2)
{
using(context = new YourDataContext())
{
return Json(context.YourStoredProc(param1, param2).ToList<YourStoredProcResult>());
}
}
public JsonResult GetResults(字符串param1,字符串param2)
{
使用(context=newyourdatacontext())
{
返回Json(context.YourStoredProc(param1,param2.ToList());
}
}
//假设只是复杂回报
public List<YourStoredProcResult> GetResults(string param1, string param2)
{
using(context = new dataDataContext())
{
return context.YourStoredProc(param1, param2).ToList<YourStoredProcResult>();
}
}
public List GetResults(字符串param1,字符串param2)
{
使用(context=newdatacontext())
{
返回context.YourStoredProc(param1,param2.ToList();
}
}
//还有其他方法……有许多方法可以返回存储的过程结果。。。见下文
公共数据上下文
//假设Json返回
public JsonResult GetResults(string param1, string param2)
{
using(context = new YourDataContext())
{
return Json(context.YourStoredProc(param1, param2).ToList<YourStoredProcResult>());
}
}
public JsonResult GetResults(字符串param1,字符串param2)
{
使用(context=newyourdatacontext())
{
返回Json(context.YourStoredProc(param1,param2.ToList());
}
}
//假设只是复杂回报
public List<YourStoredProcResult> GetResults(string param1, string param2)
{
using(context = new dataDataContext())
{
return context.YourStoredProc(param1, param2).ToList<YourStoredProcResult>();
}
}
public List GetResults(字符串param1,字符串param2)
{
使用(context=newdatacontext())
{
返回context.YourStoredProc(param1,param2.ToList();
}
}
//还有其他方法……到处寻找相同的问题,只找到所有的foreach
循环-但对我来说,最简单的事情是.ToList()
:
我到处寻找同样的问题,只找到了所有的foreach
循环,但对我来说,最简单的事情是。ToList()
:
@唯一希望-尝试我在答案中提到的两种方法之一。您要查找的结果实际上包含在ISingleResult中。这非常有帮助。。。非常感谢。@OnlyHope-总是乐于助人;)很抱歉,我还有一个问题:当我使用db.GetSubjects(Sday,Suserid).ReturnValue;返回的值是什么?@OnlyHope-尝试我在答案中提到的两种方法之一。您要查找的结果实际上包含在ISingleResult中。这非常有帮助。。。非常感谢。@OnlyHope-总是乐于助人;)很抱歉,我还有一个问题:当我使用db.GetSubjects(Sday,Suserid).ReturnValue;返回的值是什么?