使用LINQ从数据表中选择时遇到了一些麻烦。结果将映射到类TabResult
。该课程如下:
public class TabResult
{
public decimal Value;
public string LineNumber;
}
现在我正在尝试将这些结果添加到IEnumerable<TabResult>
数组中,每个数组的一个数组索引。
这是我第一次尝试代码:
public LCRResultSet(DataTable results)
{
for (int i = 0, sheet = 72; i < 3; i++, sheet++)
{
_results[i] = from tab in results.AsEnumerable()
where tab.Field<string>("LCR_SHEET_NUMBER") == sheet.ToString()
select new TabResult { LineNumber = tab.Field<string>("LCR_LINE_NUMBER"), Value = tab.Field<decimal>("VALUE") };
}
}
它适用于第一次迭代,_results [0]具有我期望的值的数量,但是第二次迭代导致_results [0]与_results [1]相同,并且第三次迭代导致_results [0] ]和_results [1]与_results [2]相同。当我分别编写3个查询时它可以正常工作,但我更喜欢这样做。
我是否遗漏了LINQ和数据表的内容?提前谢谢。
编辑1: 一些评论建议将工作表作为常量捕获,但是,我没有看到这可能是因为变量在每次迭代时递增,但是先前迭代的结果被最新迭代覆盖。 Here是指向每次迭代后显示观察窗口的imgur相册的链接。