我有一个问题类,其公共列表属性可以包含多个答案。
我有一个问题库,负责从xml文件中读取问题及其答案。
所以我有一个问题集(List),每个Question对象都有一个Answers集合,我想通过Linq查询这个问题集合的答案(即名称)。我不知道如何正确地做到这一点。
我可以用foreach做这件事,但我想知道自从我学习它以来是否有纯粹的Linq方式。
答案 0 :(得分:78)
找到答案。
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 :(得分:36)
from question in Questions
from answer in question.Answers
where answer.Name == something
select question // or select answer
答案 2 :(得分:7)
使用SelectMany和First / FirstOrDefault(如果您需要一个值)
List<Questions> questions = //initialization;
var someAnswer = questions.SelectMany(q=>q.Answers)
.First(a=>a.Name =="MyName");
答案 3 :(得分:7)
似乎你可以使用这样的东西:
var query = from q in questions
from a in q.Answers
where a.Name == "Answer Name"
select a;