2013-06-17 3 views
0

При создании наблюдаемой коллекции объектов из XML-документа с использованием linq есть ли какие-то подводные камни, о которых нужно беспокоиться? Кажется, у меня проблемы с этим, и я не уверен, почему так. Следующий код говорит мне, что я не согласен с коллекцией PatientModel и Observable моделей пациентов. Но я не знаю, что обязательно так. Я что-то упустил? Я думал, что свернута до нужного слоя. По общему признанию, мои навыки linq оставляют muc.h желанием. Я уверен, с вашей помощью я могу принять это за линии ворот, так сказатьСоздание наблюдаемой коллекции с использованием linq для XML

 patsModel = (ObservableCollection<PatientModel>) 
      from templatesList in xDocument.Descendants("TemplateData") 
       select new ObservableCollection<PatientModel> {(
        from template in templatesList.Elements("ACOData")       
        select new PatientModel { 
         EncounterId = ValueOrMin(Convert.ToInt32(template.Element("FOCUSED_READMISSIONS_ID").Value)), 
         PatientId = ValueOrMin(Convert.ToInt32(template.Element("PATIENT_ID").Value)), 
         EMPIID = template.Element("EMPI").Value, 
         PopulationPatientID = ValueOrMin(Convert.ToInt32(template.Element("POPULATION_PATIENT_ID").Value)), 
         FirstName = template.Element("FIRST_NAME").Value, 
         LastName = template.Element("LAST_NAME").Value,        
         Active = template.Element("ACTIVE").Value, 
        }) 
       }; 

Когда я добавляю .ToList()

на второй в последнюю строку ... я получаю следующее исключение ...

Error 19 Argument 1: cannot convert from 'System.Collections.Generic.List<FRACOApplication.Models.PatientModel>' to 'FRACOApplication.Models.PatientModel' 

, который говорит мне, что я что-то не согласен. Он ожидает список PatientModels, и он получает только PatientModel. Не уверен, что я делаю не так. Как выбрать список из xml?

ответ

0

У меня было несколько проблем здесь.
Первое первое что мне нужно, чтобы убедиться, что я не смешиваясь синтаксис запросов и синтаксис методов расширения enter link description here

Хотя в приведенном выше примере, я не делал этого, в моем рвении исправить мою проблему, я кончался делая это. Кроме того, у меня была запятая в конце моих отборных заявлений.
В любом случае, в конце концов, я сделал это ...

 patsModel = (ObservableCollection<PatientModel>) 
      //from templateData in 
       xDocument.Element("TemplateData").Elements("ACOData") 
      .Select(template => new PatientModel { 
         EncounterId = ValueOrMin(Convert.ToInt32(template.Element("FOCUSED_READMISSIONS_ID").Value)), 
         PatientId = ValueOrMin(Convert.ToInt32(template.Element("PATIENT_ID").Value)), 
         EMPIID = template.Element("EMPI").Value, 
         PopulationPatientID = ValueOrMin(Convert.ToInt32(template.Element("POPULATION_PATIENT_ID").Value)), 
         FirstName = template.Element("FIRST_NAME").Value, 
         LastName = template.Element("LAST_NAME").Value,        
         Active = template.Element("ACTIVE").Value 
      }); 
Смежные вопросы