All pastes #968203 Raw Edit

Lakario

public text v1 · immutable
·published 2008-04-02 21:52 UTC
rendered paste body
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using HelperFunctions;
using System.IO;

namespace GradingAssistant
{
    public class GradeConverter
    {
        public static void Convert(IEnumerable<KeyValuePair<Student, int>> students, string outputDest)
        {
            var element =
                new XElement("students",
                    from studentRecord in students
                    select new XElement("student",
                        new XElement("studentId", studentRecord.Key.StudentID),
                        new XElement("grade", studentRecord.Value))
                );
            element.Save(outputDest);
        }

        private static bool isNumber(string input)
        {
            try
            {
                int.Parse(input);
                return true;
            }
            catch (FormatException)
            {
                return false;
            }
        }

        public static Dictionary<Student, int> LoadGrades(string gradeXML, List<Student> allStudents)
        {
            XDocument scoreXML = XDocument.Load(gradeXML);
            var students =
                from student in scoreXML.Descendants("student")
                let studentID = student.Element("studentId").Value
                let localStudent = allStudents.Find(s => s.StudentID == studentID)
                where localStudent != null
                let scoreString = student.Element("grade").Value
                where isNumber(scoreString)
                let score = int.Parse(scoreString)
                select new KeyValuePair<Student, int>(localStudent, score);

            return students.Distinct(s => s.Key.StudentID).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
        }
    }
}