有没有办法获得字典项目的订单号?
Dictionary<string,string> items = new Dictionary<string,string>();
IEnumerable<string> textvalues = from c in......//using linQ to query
string s = textvalues[items["book"]];
在这种情况下,textvalues阵列将接受一个整数值返回字符串我value.How可以得到项目编号,说:“项目”有5个itemNames中和“书”是在第一个位置的话,我必须得0 。所以textvalues [项目[“书”]]将被翻译为textvalues [项目[0]]有没有办法获得字典项目的订单号?
好吧,我想使用OpenXML 2.0来读取Excel.The点这里是没有办法,我可以指定一个字段名称并获取值。 所以我试图迭代工作表的第一行,将值添加到字典Dictionary fieldItems,以便当我说fieldItems [“状态”]它会检索我基于列号的单元格值,在我的情况下列标题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"]];
(该死,我没看错了,毕竟,而且也没有编辑历史在前五分钟。)
你的问题有点混乱的呈现......但它似乎像你基本上试图找到一个词典中的一个项目的“位置”。 Dictionary<TKey, TValue>
中没有这样的概念。您应该将其视为集合从键到值的映射。
显然,当你迭代映射集合中的条目时,它们会以某种顺序出现 - 但不能保证它将与条目的添加顺序有任何关系。如果您使用SortedDictionary<,>
或SortedList<,>
(两者都是真正的字典),您可以按排序的键顺序获取条目......但尚不清楚这对您是否足够好。
目前还不清楚你真的想达到什么 - 你在文本中调用textvalues
数组,但声明它为IEnumerable<string>
- 它看起来像你然后试图使用带有字符串参数的索引器...
编辑:好的,现在这个问题已被编辑,你有Dictionary<string, int>
而不是Dictionary<string, string>
...所以整个事情更有意义。现在很容易:
order.Number = textValues.ElementAt(headers["Number"]);
OP的最后一句话表明他正在寻找像'items.FirstIndexOf(“Book” )'。如果存在这样的事情。只有'items'与'textvalues'具有相同的顺序才有意义。 – 2010-07-22 10:25:32
@Phil:确切地说,作为'items'是一个'Dictionary',不应该依赖顺序。然而,在编辑之后,更明显的是你可以做什么...... – 2010-07-22 10:30:31
Jon,我想我们甚至不需要指定“ElementAt”。只是textValues [headers [“Number”]]的作品:-) – DeveloperCSharp 2010-07-22 10:33:34
IEnumerable是否有索引存取?您可能需要以某种方式使用IList 。 –
2010-07-22 10:06:52
IEnumerable没有索引存取器。 –
TheFogger
2010-07-22 10:28:03
目前还不清楚什么是文字值,但我已经编辑了我的答案*可能*帮助你... – 2010-07-22 10:31:11