Я читал документацию по linq to xml в msdn и некоторые другие учебные пособия, но пока не смог найти правильный способ выполнить этот запрос: (
По сути, я хочу просмотреть каждого ученика в классе, для каждого вопроса вести счетчик индивидуальных навыков, т. Е. Для ученика 123 счет должен быть 001.101.033.002.001 - 1, 001.101.035.002.001 1, 001.101.033.002.002 - 0. поскольку счетчик навыков основан на том, является ли вопрос правильным (1) или неправильным (0).
<assessment name="english101" level="primary 6">
<class id="23" name="1A">
<student id="123" name="Jack Black">
<question id="101" correct="1">
<skill id="001.101.033.002.001" topicId="033" subtopicId="002" subtopicdesc="Launching a browser" topicdesc="Point and Click">Able to recognize and use desktop icon</skill>
<skill id="001.101.035.002.001" topicId="035" topicDesc="Typing" subtopicId="002" subtopicDesc="Using Words">Able to write on screen</skill>
</question>
<question id="102" correct="0">
<skill id="001.101.033.002.002" topicId="033" subtopicId="002" subtopicdesc="Launching a browser" topicdesc="Point and Click">Able to recognize and use the mouse</skill>
<skill id="001.101.035.002.001" topicId="035" topicDesc="Typing" subtopicId="002" subtopicDesc="Using Words">Able to write on screen</skill>
</question>
</student>
<student id="124" name="Tim Robbins">
<question id="103" correct="1">
<skill id="001.101.033.002.002" topicId="033" subtopicId="002" subtopicdesc="Launching a browser" topicdesc="Point and Click">Able to recognize and use the mouse</skill>
<skill id="001.101.035.002.001" topicId="035" topicDesc="Typing" subtopicId="002" subtopicDesc="Using Words">Able to write on screen</skill>
</question>
<dtasResult>
<skill id="001.101.033.002.002" result="weak" />
<skill id="001.101.033.002.002" result="strong" />
</dtasResult>
</student>
</class>
</assessment>
пока код у меня здесь:
//Open up the xml and traverse to the student nodes.
XElement root = XElement.Load(fileLocation);
IEnumerable<XElement> students = root.Elements("class").Elements("student");
string currentStudentId = "";
foreach (XElement student in students)
{
currentStudentId = student.Attribute("id").ToString();
//this code chunk below doesn't work!
XElement questions = root.Descendants("question")
.Where(question =>
question.Attribute(""));
Console.WriteLine(student.DescendantsAndSelf("question"));
Console.WriteLine();
Console.WriteLine();
}
Мне еще предстоит выяснить, как выполнить цикл для каждого вопроса на каждого учащегося ... и код в середине выгула не работает !!
Обновление:
если бы я хотел вычислить общий вопрос на одного учащегося, как бы я мог изменить ваш запрос выше для этого? я пытаюсь grp.Count (z => z.Correct) и другой метод, но я не могу сделать это правильно, спасибо:)