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
的代码,我可以更好地回答您的问题。