IEnumerable返回类型问题
本文关键字:返回类型 问题 KeyValuePair IEnumerable | 更新日期: 2023-09-27 18:06:49
我正在研究一个linq方法,似乎无法获得与方法签名匹配的返回类型。如有任何指导,将不胜感激。
谢谢!
private static IEnumerable<KeyValuePair<string, string>> RunQuery(XDocument doc)
{
var data = from b in doc.Descendants("Company")
where b.Attribute("name").Value == "CompanyA"
from y in b.Descendants("Shirt")
from z in y.Descendants("Size")
select new
{
color = y.Attribute("id").Value,
price = z.Value
};
return data;
}
必须创建KeyValuePairs
...
select new KeyValuePair(y.Attribute("id").Value, z.Value)
您可以使您的查询更加排序。注意,我已经删除了from y in b.Descendants("Shirt")
,因为Descendants
解析整个xml节点,包括它的所有后代直到最低级别。这个查询将返回Dictionary<string, string>
,它实现了IEnumerable<KeyValuePair<string, string>>
,所以您不需要更改方法签名,但我强烈建议这样做,因为客户端将无法访问具有恒定时间的字典元素
return doc.Descendants("Company")
.Where(node => node.Attribute("name").Value == "CompanyA")
.Descendants("Size")
.ToDictionary(node => node.Attribute("id").Value,
node => node.Value);