我有一個問卷類,它的細節,問題和問題組。該結構是這樣的:如何使用LINQ獲得有序列表細節
創建詳細視圖,以顯示一Questionnaire
和細節。細節應根據Sequence
在QuestionGroup
中顯示。使用LINQ,如何獲得一個調查問卷,其中的細節按問題組中的順序排列。
到目前爲止,當我創建一個LINQ語法得到解決這個問題:
var questionnaire = db.Questionnaires
.Include(q => q.QuestionnaireDetails)
.FirstOrDefault(q => q.QuestionnaireID == questionnaireID);
我有2個問題:
1)我不能叫Include
爲Question
和QuestionGroup
(立即加載)
.Include(q => q.QuestionnaireDetails.Question)
< - 錯誤
錯誤:
Cannot convert lambda expression to type 'string' because it is not a delegate type
2)I不能通過Sequence
調用OrderBy
,呼叫.FirstOrDefault()
之前我加入
.OrderBy(q => q.QuestionnaireDetails.Question.QuestionGroup.Sequence)
< - 錯誤
錯誤:
'System.Collections.Generic.ICollection<MvcApplication1.Models.QuestionnaireDetail>' does not contain a definition for 'Question' and no extension method 'Question' accepting a first argument of type 'System.Collections.Generic.ICollection<MvcApplication1.Models.QuestionnaireDetail>' could be found (are you missing a using directive or an assembly reference?)
UPDATE
我試圖從溶液@ JesseJames,稍作修改:
var questionnaire = from qg in db.QuestionGroups
join q in db.Questions on qg.QuestionGroupID equals q.QuestionGroupID
join qd in db.QuestionnaireDetails on q.QuestionID equals qd.QuestionID
join qe in db.Questionnaires on qd.QuestionnaireID equals qe.QuestionnaireID
orderby qg.Sequence
select new Questionnaire {
QuestionnaireID = qe.QuestionnaireID,
Date = qe.Date,
Respondent = qe.Respondent,
QuestionnaireDetails = qe.QuestionnaireDetails };
但我有錯誤:
The entity or complex type 'MvcApplication1Model.Questionnaire' cannot be constructed in a LINQ to Entities query.
? – 2014-12-19 03:15:04
@RobertHarvey是的,我使用EF 6和ASP.NET MVC 5 – Willy 2014-12-19 03:15:31
'db.Questionnaires'是否返回IEnumerable,IQueryable或ObjectQuery? – 2014-12-19 03:16:13