使用linq从xml文档创建可观察的对象集合时,是否需要担心任何陷阱?我这样做似乎遇到了麻烦,我不确定为什么会这样。以下代码告诉我,我与PatientModel和Observable Patient模型集合不匹配。但我不知道必然如此。我在这里错过了什么吗?我以为我钻到了正确的层。不可否认,我的linq技能离开了muc.h是不可取的。我对你的帮助充满信心,我可以把它放在球门线上,可以这么说
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'
告诉我,我在某处不匹配。它期待一个PatientModel列表,它只获得一个PatientModel。不知道我在那里做错了什么。如何从xml中选择一个列表?
答案 0 :(得分: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
});