我有来自MSDN 示例的以下代码:
if (sheetData.Elements<Row>().Where(r => r.RowIndex == rowIndex).Count() != 0)
{
row = sheetData.Elements<Row>().Where(r => r.RowIndex == rowIndex).First();
...
我重构如下:
Dictionary<uint, Row> rowDic = sheetData.Elements<Row>().ToDictionary(r => r.RowIndex.Value);
if (rowDic[rowIndex].Count() != 0)
{
row = rowDic[rowIndex];
...
现在,我感觉到如果 Enumerable.ToDictionary<> 方法实际上必须枚举所有数据,那么这也是多余的,但是 MSDN 文档没有说明这种转换是如何发生的。
我正在考虑使用的替代方法是:
var foundRow = sheetData.Elements<Row>().Where(r => r.RowIndex == rowIndex);
if (foundRow.Count() != 0)
{
row = foundRow.First();
...
但是,我想从以前的经验中知道哪个会更快以及为什么。
谢谢。