LINQ to DataTable - 奇怪的行为

时间:2016-07-18 13:39:54

标签: c# linq datatable

使用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相册的链接。

0 个答案:

没有答案