Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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
如何使用LINQ to XML在C#中为这段代码获取一个usabled List对象?_C#_.net_Visual Studio_Windows Phone 7 - Fatal编程技术网

如何使用LINQ to XML在C#中为这段代码获取一个usabled List对象?

如何使用LINQ to XML在C#中为这段代码获取一个usabled List对象?,c#,.net,visual-studio,windows-phone-7,C#,.net,Visual Studio,Windows Phone 7,新手到C#这里 我有以下代码: var xdoc = XDocument.Parse(xml); var result = xdoc.Root.Elements("item") .Select(itemElem => itemElem.Elements().ToDictionary(e => e.Name.LocalName, e => e.Value)) .ToList(); 但是当我试

新手到C#这里

我有以下代码:

var xdoc = XDocument.Parse(xml);
            var result = xdoc.Root.Elements("item")
                .Select(itemElem => itemElem.Elements().ToDictionary(e => e.Name.LocalName, e => e.Value))
                .ToList();
但是当我试图像使用任何
列表
对象那样使用
结果
时,例如
结果.Item
,它就不起作用了

我做错了什么?为什么结果不能作为我可以在代码中操纵的普通列表对象返回?我需要从中创建另一个列表对象吗


我只是想从列表中找出第一个字典项并使用它

这取决于你的期望。您的代码当前生成一个
列表
。所以列表中的每个条目都是一本字典

您可以像通常访问列表元素一样访问每个字典,即

string firstResult = result[0]["key"];
第一部分
[0]
是列表的索引器,第二部分
[“key”]
是字典的索引器-这将返回列表中第一个字典的key
“key”
的值

这假设列表中至少有一个条目,您必须对此进行检查。

这是一个
列表。列表中的每个元素都是一个字典

知道你想用它做什么会有帮助

但一些例子是:

//Get the First Dictionary Item, then Iterate through all the items in the first dictionary.
var firstItem = results.First();
foreach(var kvPair in firstItem)
{
    var key = kvPair.Key;
    var val = kvPair.Value;
}

//Loop through each Dictionary getting values from each.
foreach (var result in results)
{
    var wordValue = result["word"];
    var defValue = result["def"];
}

//Create a list of all the values for the Elements with the key "word".
var valuesForAllWords = 
  results
  .Select(r => r["word"])

好的,但如何访问该列表中的第一个词典?结果[0]是结果列表中的第一个词典。请注意,如果列表为空,结果[0]将引发异常。您可以进行测试,查看列表是否为空测试结果。Any()或result.Count()>0。您可以使用var x=result.FirstOrDefault()并测试x是否为null。我只是尝试从列表中获取第一个字典项并使用它。