我不清楚如何说出这个问题,如果我不使用正确的术语,请原谅我。
我有一个System.Xml.Linq.XElement el
,其中包含一个xml文档。我想查询XElement的一部分,并将用户对象(Upload
)添加到通用列表(页面属性中保存的UploadList
),如下所示:
this.UploadsList.Add((from el1 in el.Descendants("Uploads")
select new Upload
{
Comments = el1.Element("Comments") != null ? el1.Element("Comments").Value : ""
,
***ConsentForImageUse.Text=el1.Element("SomeNode") != null ? el1.Element("SomeNode").Value : ""***
,
DateImageProduced = el1.Element("DateImageProduced").Value != "" ? DateTime.Parse(el1.Element("DateImageProduced").Value) : DateTime.MinValue
,
ImageTakenBy = el1.Element("ImageTakenBy") != null ? el1.Element("ImageTakenBy").Value : ""
}).First<Upload>());
编译器抱怨星号的位。
我的上传对象有一个属性ConsentForImageUse
,它本身就是一个有几个属性的类。
错误是 无效的初始化成员声明符 。有谁知道我是否可以像这样使用Linq创建“复杂”对象?
答案 0 :(得分:2)
由于指定了对象初始值设定项的方式,因此无法在一个属性中设置属性。而是在您的LINQ查询中创建一个ConsentForImageUse对象作为let绑定,并将其分配给Upload对象的ConsentForImageUse属性。在没有进一步了解你的精确对象模型的情况下,我做了一些假设,但这应该适合你。
var uploads = from el1 in el.Descendants("Uploads")
let consent = new ConsentForImageUse() { Text = el1.Element("SomeNode") != null ? el1.Element("SomeNode").Value : string.Empty }
select new Upload
{
Comments = el1.Element("Comments") != null ? el1.Element("Comments").Value : string.Empty,
ConsentForImageUse = consent,
DateImageProduced = el1.Element("DateImageProduced") != null ? el1.Element("DateImageProduced").Value : string.Empty,
ImageTakenBy = el1.Element("ImageTakenBy") != null ? el1.Element("ImageTakenBy").Value : string.Empty
};
list.Add(uploads.First());