2015-09-21 30 views
0

我很新的linq.i已在DB得到了大多數內部類對象的一對多關係在LINQ

TYPE, QUESTION,ANSWER 

每一種類型的3個實體有很多問題 每一個問題有很多答案, 我急切地加載IList,其中有所有的問題和答案,我需要獲取所有的答案,無視其類型和問題,我的意思是我需要有結果,其類型是答案類型的答案,其中所有的答案在數據庫中。 我有

IList<TYPE> types=context.TYPES.ToList(); 

但我沒有關於如何得到所有的答案任何想法。

+0

您使用實體框架(EF)? – daniel

+0

@daniel是EF代碼優先 – someone

+0

這些表是否有外鍵關係? – daniel

回答

0

包含「QUESTION」和「QUESTION.ANSWER」爲您提供外鍵關係列表。

IList<TYPE> types = context.TYPES.Include("QUESTION").Include("QUESTION.ANSWER").ToList(); 

要檢查

var questions = types.SelectMany(t => t.QUESTION).ToList(); 
var answers = questionList.SelectMany(t => t.ANSWER).ToList(); 

但我認爲你應該直接做到這一點。

IList<QUESTION> questions = context.QUESTION.Include("TYPE").Include("ANSWER").ToList(); 
+0

tnx的回覆,但問題是第一()會給第一類型的問題,我想用foreach循環。 meybe唯一的方法 – someone

+0

你想彙總問題或答案在列表中?如果是,問題或答案?還有其他一些優雅的方式來代替foreach循環。 – daniel

+0

請參閱我的更新。 – daniel

2

據我瞭解你的問題,你想獲得檢索IList<TYPE>的所有答案。

首先,你必須包括在你的數據庫查詢所有亞型:

allTypes = db.TYPES.Include("QUESTIONS").Include("QUESTIONS.ANSWERS").ToList(); 

然後,只需壓平與SelectMany的LinQ方法層次:

var items = allTypes.SelectMany(t => t.QUESTIONS.SelectMany(a => a.ANSWERS)); 

到那時,你應該能夠遍歷所有答案(並根據相關實體做任何需要的操作)

+0

我試圖upvote,但由於聲譽我不能,謝謝這工作正常也。 – someone