C# 如何从XmlSchema.Elements获取第一项
我有XmlSchema对象。具有元素属性的我需要它的第一个元素。我想不出怎么才能不写foreach/break(这看起来很愚蠢)。有好办法吗 编辑:我找到的唯一方法是:getenumerator/movenext/value EDIT2:其中一种方法是将XmlSchema.Elements.Values(ICollection)强制转换为有意义的类型,以便与Linq一起使用。问题是我找不到那种类型。GetType给了我一个名称:“System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection” 我在ObjectExplorer中看不到这种类型,也无法转换为它C# 如何从XmlSchema.Elements获取第一项,c#,.net,xml,xsd,.net-4.5,C#,.net,Xml,Xsd,.net 4.5,我有XmlSchema对象。具有元素属性的我需要它的第一个元素。我想不出怎么才能不写foreach/break(这看起来很愚蠢)。有好办法吗 编辑:我找到的唯一方法是:getenumerator/movenext/value EDIT2:其中一种方法是将XmlSchema.Elements.Values(ICollection)强制转换为有意义的类型,以便与Linq一起使用。问题是我找不到那种类型。GetType给了我一个名称:“System.Xml.Schema.XmlSchemaObject
如果你有有效的解决方案,请回答,而不是随便说说。谢谢。根据需要对元素的名称或值使用linq 例如:
var v = yourObject.Elements.Names.OfType<XmlQualifiedName>().FirstOrDefault();
var w = yourObject.Elements.Values.OfType<XmlSchemaElement>().FirstOrDefault();
var v=yourObject.Elements.Names.OfType().FirstOrDefault();
var w=yourObject.Elements.Values.OfType().FirstOrDefault();
===
已编辑:添加类型以获取ICollection而不是ICollection,以便可以使用FirstOrDefault
注意:我在示例XmlSchema中验证了此解决方案,如果您的元素名称或值具有不同的类型,则需要在OfType中使用linq进行更改。不能通过获取项来获取第一项。元素的first()属性?linq与ienumerable一起工作。不是这样。也许可以检查
System.XML.Extensions
名称空间?它似乎定义了自己的LINQ扩展,其中一个是XElements(),它公开了IEnumerable。@KyleBaran我找不到它。我看到的最接近的名称空间是:System.Xml.Linq名称空间,其中包含扩展类。其中有元素法。但不是所有人。我使用的是.NET 4.5。你确定存在这样的属性和方法吗?请给出一个有效的解决方案作为答案,而不是在黑暗中飞镖。。。有名称和值,但是(参见我的编辑2)-我不知道如何正确地转换它们以应用LINQ。如果你告诉我,我会记下你的答案!