Linq XML - 创建复杂类型
我不知道如何表达这个问题,所以如果我没有使用正确的术语,请原谅我。
我有一个包含 xml 文档的 System.Xml.Linq.XElement el 。我想查询 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>());
编译器抱怨与星号一起位。
我的 Upload 对象有一个属性 ConsentForImageUse
,它本身就是一个具有几个属性的类。
错误是无效的初始化程序成员声明符。有谁知道我是否可以像这样使用 Linq 创建“复杂”对象?
I have no firm idea how to word this question, so forgive me if I don't use the correct terminology.
I have a System.Xml.Linq.XElement el
which contains an xml document. I want to query a part of the XElement and add user objects (Upload
) to a generic list (UploadList
held in a page property) like so:
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>());
The compiler complains about the bit with the asterisks.
My Upload object has a property ConsentForImageUse
which is itself a class with a couple of properties.
The error is Invalid initialiser member declarator. Does anyone know if I can create 'complex' objects using Linq like this like this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于指定对象初始值设定项的方式,您无法同时设置属性的属性。相反,在 LINQ 查询中创建一个 ConsentForImageUse 对象作为 let 绑定,并将其分配给 Upload 对象的 ConsentForImageUse 属性。在没有进一步了解您的精确对象模型的情况下,我做了一些假设,但这应该对您有用。
Because of the way that object initializers are specified, you cannot set a property of a property in one. Instead, create an your ConsentForImageUse object as a let binding in your LINQ query, and assign that to the Upload object's ConsentForImageUse property. Without further knowledge of your precise object model, I've made some assumptions, but this ought to work for you.