kit*_*une 47 .net c# linq collections linq-to-xml
我有一个Question类,它有公共List属性,可以包含几个Answers.
我有一个问题库,负责从xml文件中读取问题及其答案.
所以我有一个问题(列表)的集合,每个问题对象都有一个答案集合,我想通过使用Linq查询这个问题集合的答案(即其名称).我不知道如何正确地做到这一点.
我可以用foreach做这件事,但我想知道自从我学习它以来是否有纯粹的Linq方式.
Dan*_*ner 83
找到答案.
questions.SelectMany(q => q.Answers).Where(a => a.Name == "SomeName")
Run Code Online (Sandbox Code Playgroud)
找到答案的问题.
questions.Where(q => q.Answers.Any(a => a.Name == "SomeName"))
Run Code Online (Sandbox Code Playgroud)
事实上,你会得到答案或问题的集合,你将不得不使用First(),FirstOrDefault(),Single(),或SingleOrDefault()根据您的需要得到一个明确的答案或问题.
ybo*_*ybo 36
from question in Questions
from answer in question.Answers
where answer.Name == something
select question // or select answer
Run Code Online (Sandbox Code Playgroud)
使用SelectMany和First/FirstOrDefault(如果您需要一个值)
List<Questions> questions = //initialization;
var someAnswer = questions.SelectMany(q=>q.Answers)
.First(a=>a.Name =="MyName");
Run Code Online (Sandbox Code Playgroud)
看来你可以使用这样的东西:
var query = from q in questions
from a in q.Answers
where a.Name == "Answer Name"
select a;
Run Code Online (Sandbox Code Playgroud)