我正在使用Open XML&amp;我有一个IDictionary<String, List<OpenXmlCompositeElement>>
结构。我想使用结构的List部分,但this.map.Values尝试将其包装在ICollection中。如何从我的结构中获取List部分?
public List<OpenXmlCompositeElement> MapData()
{
//this does not work
return this.map.Values;
}
答案 0 :(得分:2)
因为它是一本字典,所以它希望你知道你想要哪个键值。
所以这将是您需要的代码,其中yourKey
是您要检索的密钥:
public List<OpenXmlCompositeElement> MapData()
{
return this.map["yourKey"];
}
如果您对密钥没兴趣,并且字典只是一个字典,因为序列化程序这样说,您可以获得第一个项目,例如:
public List<OpenXmlCompositeElement> MapData()
{
return this.map.Values.First();
}
答案 1 :(得分:0)
您可以遍历字典并使用您想要的值,也可以直接使用密钥访问List(在这种情况下,它是一个字符串)
<video controls poster="img/video-stills/video.png">
<source src="videos/video.mp4" type="video/mp4" />
</video>
字典中IDictionary<String, List<OpenXmlCompositeElement>> myDictionary;
List<OpenXmlCompositeElement> myList = myDictionary["myKey"];
可用。
或者你可以循环播放
myKey
答案 2 :(得分:0)
假设这是你的字典...
IDictionary<string, List<OpenXmlCompositeElement>> items = ...;
按键获取特定列表......
List<OpenXmlCompositeElement> list = items["key"];
获取字典中的第一个列表...
List<OpenXmlCompositeElement> list = items.Values.First();
将字典中的所有列表连接到一个列表中......
List<OpenXmlCompositeElement> list = items.SelectMany(o => o).ToList();
答案 3 :(得分:0)
foreach(KeyValuePair<string, List<OpenXmlCompositeElement>> kvp in IDictionary)
{
string key = kvp.key
List<OpenXmlCompositeElement> list = kvp.Value;
foreach(OpenXmlCompositeElement o in list)
{
Do anything you need to your List here
}
}
我也在使用字典,所以这是我目前正在使用的一个真实示例:
foreach(KeyValuePair<string, List<DataRecords>> kvp in vSummaryResults)
{
string sKey = kvp.Key;
List<DataRecords> list = kvp.Value;
string[] vArr = sKey.Split(',');
int iTotalTradedQuant = 0;
double dAvgPrice = 0;
double dSumQuantPrice = 0;
double dQuantPrice = 0;
double dNumClose = 0;
foreach (DataRecords rec in list)
{
if(vSummaryResults.ContainsKey(sKey))
{
iTotalTradedQuant += rec.iQuantity;
dQuantPrice = rec.iQuantity * rec.dInputTradePrice;
dSumQuantPrice += dQuantPrice;
dAvgPrice = dSumQuantPrice / iTotalTradedQuant;
dNumClose = rec.dNumericClosingPrice;
}
else
{
vSummaryResults.Add(sKey, list);
//dNumClose = rec.dNumericClosingPrice;
}