Sql Can';无法将IsingResult转换为IEnumerable

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

我试图使用Linqtosql显示来自数据库的列表,但我想我弄错了

我编写了存储过程来检索数据,如果您需要更多信息: 这是我的代码:

     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;返回的值是什么?