我有一个Question类,其中有一个公共的List属性,可以包含多个Answers。
我有一个问题存储库负责从xml文件中读取问题及其答案。
因此,我有一个Questions(List)集合,每个Question对象都有一个Answers的集合,我想通过使用Linq查询这个Questions集合中的Answer(例如按名称)。我不知道如何正确地实现这一点。
我可以使用foreach来完成,但我想知道是否有一种纯Linq的方法,因为我正在学习它。
我有一个Question类,其中有一个公共的List属性,可以包含多个Answers。
我有一个问题存储库负责从xml文件中读取问题及其答案。
因此,我有一个Questions(List)集合,每个Question对象都有一个Answers的集合,我想通过使用Linq查询这个Questions集合中的Answer(例如按名称)。我不知道如何正确地实现这一点。
我可以使用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()
来获取一个特定的答案或问题。
from question in Questions
from answer in question.Answers
where answer.Name == something
select question // or select answer
使用SelectMany和First/FirstOrDefault(如果您只需要一个值)
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;