linqの質問:ネストされたコレクションのクエリ
複数の回答を含むことができるpublic Listプロパティを持つQuestionクラスがあります。
質問とその回答をxmlファイルから読み取る責任がある質問リポジトリがあります。
だから私は質問(リスト)のコレクションを持っており、各質問オブジェクトには回答のコレクションがあります。そして、Linqを使用してこの質問のコレクション(名前で)を照会したいと思います。これを適切に行う方法がわかりません。
私はforeachでそれをすることができましたが、私はそれを学んでいるので、純粋なLinqの方法があるかどうか知りたいです。
答えを見つけるため。
_questions.SelectMany(q => q.Answers).Where(a => a.Name == "SomeName")
_
答えの質問を見つけるため。
_questions.Where(q => q.Answers.Any(a => a.Name == "SomeName"))
_
実際には、回答または質問のコレクションを取得し、First()
、FirstOrDefault()
、Single()
、またはSingleOrDefault()
を使用する必要があります1つの特定の回答または質問を取得する必要があります。
from question in Questions
from answer in question.Answers
where answer.Name == something
select question // or select answer
SelectManyとFirst/FirstOrDefaultを使用します(1つの値が必要な場合)
List<Questions> questions = //initialization;
var someAnswer = questions.SelectMany(q=>q.Answers)
.First(a=>a.Name =="MyName");
このようなものを使用できるようです:
var query = from q in questions
from a in q.Answers
where a.Name == "Answer Name"
select a;