【发布时间】:2016-07-01 18:20:19
【问题描述】:
在 LINQ to Objects 中,可以使用谓词轻松过滤集合的子集,例如如果我的域类是Person,则集合是persons,谓词Func<Person, bool> filter,则类似于persons.Where(filter).ToArray()。
与序列化为XElement 的人员集合具有相同的功能:
XElement[] xFiltered = xPersons.Elements("Person")
.Where(xFilter)
.ToArray();
其中xPersons 是包含人员元素(每个名为“Person”)的根元素,Func<XElement, bool> xFilter 是在XElement 上定义的谓词作为参数类型。
我想知道是否存在直接的可能性在 LINQ for XML 中创建一个Where 语句,该语句将Func<Person, bool> 类型的谓词作为参数,而不是Func<XElement, bool>?为此,需要实现一个转换器将Func<Person, bool> 转换为Func<XElement, bool>,但这似乎是一种违反直觉且容易出错的操作。能否设想出这种真正的转换器(例如,基于检查)?或者它只是存在?
【问题讨论】:
-
目前我们不知道您将如何从
XElement构建Person...一旦您掌握了,剩下的就很容易了。
标签: c# xml linq linq-to-xml