我有这段代码:
MyObject Obj {get;set;}
var x = from xml in xmlDocument.Descendants("Master")
select new MyObject
{
PropOne = //code to get data from xml
PropTwo = //code to get data from xml
}
结果是var
为IEnumerable<MyObject>
,我需要使用foreach
循环将x
分配给Obj
:
foreach(var i in x)
{
Obj = i;
}
有没有办法可以使用LINQ语句而没有以这种方式返回IEnumerable
?或者像我一样使用foreach
循环是否正常?
答案 0 :(得分:6)
是的:
Obj = (from xml in xmlDocument.Descendants("Master")
select new MyObject
{
PropOne = //code to get data from xml
PropTwo = //code to get data from xml
}).FirstOrDefault();
答案 1 :(得分:1)
如果您只返回一个对象,则可以执行以下操作:
MyObject Obj {get;set;}
var x = (from xml in xmlDocument.Descendants("Master")
select new MyObject
{
PropOne = //code to get data from xml
PropTwo = //code to get data from xml
}).Single();
现在您的x
对象应该是MyObject类型
答案 2 :(得分:1)
您需要检索第一个项目。我会在你的LINQ查询之后亲自创建它:
var element = xmlDocument.Descendants("Master").Single(); // Or .First() if appropriate
Obj = new MyObject
{
PropOne = //code to get data from xml in "element"
PropTwo = //code to get data from xml in "element"
};
我个人觉得这更符合您的意图,因为您正在检索单个元素,然后从中构建单个对象。