Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc LINQ:为什么我在这个LINQ查询中出错?_Asp.net Mvc_Asp.net Mvc 3_Linq_Linq To Sql_Repository - Fatal编程技术网

Asp.net mvc LINQ:为什么我在这个LINQ查询中出错?

Asp.net mvc LINQ:为什么我在这个LINQ查询中出错?,asp.net-mvc,asp.net-mvc-3,linq,linq-to-sql,repository,Asp.net Mvc,Asp.net Mvc 3,Linq,Linq To Sql,Repository,这是我的存储库中的我的方法: public List<Question> getallquestion() { var hej = from Core in db.CoreValue join Question in db.Question on Core.CID equals question.QID join Subject in db.SubjectType on C

这是我的存储库中的我的方法:

    public List<Question> getallquestion()
    {
        var hej = from Core in db.CoreValue
                    join Question in db.Question on Core.CID equals question.QID
                    join Subject in db.SubjectType on Core.CID equals Subject.SID
                    select new
                    {
                        Core.Cname,
                        Question.QuestionText,
                        Subject.Sname
                    };

        return hej.ToList();

    }
提前谢谢


致以最良好的祝愿

您的linq查询生成匿名对象列表(当您使用
selectnew{(…)}
而不使用任何类型时)。您应该将其替换为
selectnewquestion(){(…)}
。您应该检查是否根据问题类属性选择语法

例如,当您有
名称
时,
文本
主题
属性应如下所示:

    var hej = from c in db.CoreValue
                join q in db.Question on c.CID equals q.QID
                join s in db.SubjectType on c.CID equals s.SID
                select new Question
                {
                    QID = q.QID,
                    QuestionText  = q.QuestionText
                };
public ActionResult Index() {
    IEnumerable<CreateViewModel> questions = someContext.GetAllQuestionViewModel();
    return View(questions);
}

您的方法期望返回
问题类型的集合,但您的LINQ查询返回的是一系列问题。您应该更改查询,例如更改投影:

public List<Question> getallquestion()
{
    var hej = from Core in db.CoreValue
                join Question in db.Question on Core.CID equals question.QID
                join Subject in db.SubjectType on Core.CID equals Subject.SID
                select new Question
                {
                    Name = Core.Cname,
                    Text = Question.QuestionText,
                    Subject = Subject.Sname
                };

    return hej.ToList();
}
公共列表getallquestion()
{
var hej=以db为单位的自核心值
在db中加入问题。Core.CID上的问题等于Question.QID
在Core.CID上的db.SubjectType中加入Subject等于Subject.SID
选择新问题
{
Name=Core.Cname,
Text=Question.QuestionText,
Subject=Subject.Sname
};
返回hej.ToList();
}

这是使用从查询结果分配
问题
类型的属性值。您的属性名称将有所不同。

将您的选择更改为:

public List<CreateViewModel> GetAllQuestionViewModel()
    {
        var hej = from Core in db.CoreValue
                    join Question in db.Question on Core.CID equals question.QID
                    join Subject in db.SubjectType on Core.CID equals Subject.SID
                    select new CreateViewModel
                    {
                        Cname = Core.Cname,
                        QuestionText = Question.QuestionText,
                        Sname = Subject.Sname
                    };

        return hej.ToList();

    }
public List GetAllQuestionViewModel()
{
var hej=以db为单位的自核心值
在db中加入问题。Core.CID上的问题等于Question.QID
在Core.CID上的db.SubjectType中加入Subject等于Subject.SID
选择新建CreateViewModel
{
Cname=Core.Cname,
QuestionText=Question.QuestionText,
主题
};
返回hej.ToList();
}
在控制器中,您可以执行以下操作:

    var hej = from c in db.CoreValue
                join q in db.Question on c.CID equals q.QID
                join s in db.SubjectType on c.CID equals s.SID
                select new Question
                {
                    QID = q.QID,
                    QuestionText  = q.QuestionText
                };
public ActionResult Index() {
    IEnumerable<CreateViewModel> questions = someContext.GetAllQuestionViewModel();
    return View(questions);
}
public ActionResult Index(){
IEnumerable questions=someContext.GetAllQuestionViewModel();
返回视图(问题);
}

您不能返回匿名类型


创建一个类

public class QuestionResult
{
 public string Core {get; set;}
 public string Question {get; set;}
 public string Subject{get; set;}
}   
并使用它

public List<QuestionResult> getallquestion()
    {
        var hej = from Core in db.CoreValue
                    join Question in db.Question on Core.CID equals question.QID
                    join Subject in db.SubjectType on Core.CID equals Subject.SID
                    select new QuestionResult
                    {
                        Core = Core.Cname,
                        Question = Question.QuestionText,
                        Subject = Subject.Sname
                    };

        return hej.ToList();

    }                                            
公共列表getallquestion()
{
var hej=以db为单位的自核心值
在db中加入问题。Core.CID上的问题等于Question.QID
在Core.CID上的db.SubjectType中加入Subject等于Subject.SID
选择新问题结果
{
Core=Core.Cname,
Question=Question.QuestionText,
Subject=Subject.Sname
};
返回hej.ToList();
}                                            

现在,当我将其更改为您所说的内容时,我遇到了另一个错误:无法使用集合初始值设定项初始化类型“NKI3.Models.Question”,因为它没有实现“System.Collections.IEnumerable”,您应该分配
Core.Cname
Question.QuestionText
Subject.Sname
问题类属性的值。您能告诉我问题类包含哪些属性吗?我更新了答案。如果问题类仅包含这两个属性,则您不能在其中包含SubjectType值,就像您在问题上尝试的那样。请显示
问题
类的可用公共构造函数。我猜测它是
问题
实体的
命名空间
。如果您的类中已经有using语句,您可以只使用
新问题
。我的问题只有2个属性及其QID和QuestionText。Sname来自SubjectType表,Cname来自CoreValue表如果您能提供
CreateViewIndex
的代码,我可以更好地回答您的问题。