Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从XmlSchema.Elements获取第一项_C#_.net_Xml_Xsd_.net 4.5 - Fatal编程技术网

C# 如何从XmlSchema.Elements获取第一项

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

我有XmlSchema对象。具有元素属性的我需要它的第一个元素。我想不出怎么才能不写foreach/break(这看起来很愚蠢)。有好办法吗

编辑:我找到的唯一方法是:getenumerator/movenext/value

EDIT2:其中一种方法是将XmlSchema.Elements.Values(ICollection)强制转换为有意义的类型,以便与Linq一起使用。问题是我找不到那种类型。GetType给了我一个名称:“System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection”

我在ObjectExplorer中看不到这种类型,也无法转换为它


如果你有有效的解决方案,请回答,而不是随便说说。谢谢。

根据需要对元素的名称或值使用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。如果你告诉我,我会记下你的答案!