Dictionary<string,string> items = new Dictionary<string,string>();
IEnumerable<string> textvalues = from c in......//using linQ to query
string s = textvalues[items["book"]];
在这种情况下,textvalues数组将接受一个整数值来返回字符串值。如何获取项目编号,说“items”有5个项目名称,“book”在第一个位置然后我必须得到0.So textvalues [items [“book”]]将被翻译为textvalues [item [0]]
好的我正在尝试使用OpenXML 2.0来阅读Excel。这里的要点是我无法指定字段名称并获取值。 所以我试图迭代工作表的第一行,将值添加到字典Dictionary fieldItems,这样当我说fieldItems [“Status”]它会根据列号检索我的单元格值,在我的例子中是列header name.ok这里是代码。
Dictionary<string, int> headers = new Dictionary<string, int>();
IEnumerable<string> ColumnHeaders = from cell in (from row in worksheet.Descendants<Row>()
where row.RowIndex == 1
select row).First().Descendants<Cell>()
where cell.CellValue != null
select
(cell.DataType != null
&& cell.DataType.HasValue
&& cell.DataType == CellValues.SharedString
? sharedString.ChildElements[
int.Parse(cell.CellValue.InnerText)].InnerText
: cell.CellValue.InnerText);
int i=0;
Parallel.ForEach(ColumnHeaders, x => { headers.Add(x,i++); });
order.Number = textValues[headers["Number"]];
答案 0 :(得分:0)
(Darn,我毕竟没有误读它,并且在前五分钟内没有编辑记录。)
你的问题有点令人困惑地提出......但似乎就像你基本上试图找到字典中项目的“位置”一样。 Dictionary<TKey, TValue>
中没有这样的概念。您应该将其视为从键到值的映射的 set 。
显然,当你迭代那组映射中的条目时,它们会以某种顺序出现 - 但不能保证它与条目的添加顺序有任何关系。如果您使用SortedDictionary<,>
或SortedList<,>
(两者都是字典),您可以按排序键顺序获取条目...但不清楚这对您是否足够好。< / p>
还不清楚你真正想要实现的目标 - 你在文本中调用textvalues
一个数组,但是将其声明为IEnumerable<string>
- 看起来你正在尝试使用带有字符串参数的索引器......
Dictionary<string, int>
而不是Dictionary<string, string>
...所以整个事情更有意义。现在很简单:
order.Number = textValues.ElementAt(headers["Number"]);