C# LINQ到XML解析单个对象

C# LINQ到XML解析单个对象,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,我试图像这样解析XML文档: <root> <first>1</first> <second>2</second> </root> class SomeClass { ... public string First; public string Second; } 但据我所知,我只能在select语句中创建新对象,该语句只能应用于集合,根元素不是集合 当然,我可以单独选择字段,如

我试图像这样解析XML文档:

<root>
    <first>1</first>
    <second>2</second>
</root>
class SomeClass
{
    ...

    public string First;
    public string Second;
}
但据我所知,我只能在select语句中创建新对象,该语句只能应用于集合,根元素不是集合

当然,我可以单独选择字段,如:

new SomeClass(doc.Element("first").Value, doc.Element("second").Value);
但我非常感兴趣的是,是否有可能在一个LINQ语句中只使用一次doc变量并在LINQ语句中创建对象


换句话说:是否可以创建一个不在Select方法中的对象?

根元素可能不是集合,但当您解析xml时,您的doc变量是一个元素集合,包括根元素。因此,您仍然可以使用选择:

string xml = @"<root><first>1</first><second>2</second></root>";

var doc = XDocument.Parse(xml);
var collectionOfSomeClass = doc.Elements()
                            .Select(x => new SomeClass 
                                        { First = x.Element("first").Value, 
                                          Second = x.Element("second").Value 
                                        });

你所拥有的和这个例子所能得到的一样好。@GentiSaliu不,我想用LINQ。当然,除了LINQ之外,还有很多不同的方法来解析这个对象,但是我在这里尝试学习LINQ,我认为如果不进行反序列化是不可能的。