Datatable.GetChanges()始终返回null

时间:2014-12-25 07:57:04

标签: c# linq dataset strongly-typed-dataset

我尝试做的是编辑匹配的行并更改列的值,但它会一直返回null。我相信这是因为我将查询保存到对象的方式,因为如果我直接访问查询,那么它每次都会继续处理查询。处理这个问题的最佳方法是什么?

using (SymbolsTableAdapter symbolAdapter = new SymbolsTableAdapter())
using (Dataset.SymbolsDataTable symbolTable = new Dataset.SymbolsDataTable())
{
    symbolAdapter.Fill(symbolTable);

    foreach (var error in errors)
    {
        var query = from c in symbolTable
                    where c.Symbol == error.Key && c.Market == error.Value
                    select c;

        Dataset.SymbolsRow row = query.AsParallel().FirstOrDefault();

        if (row != null)
        {
            row.isUnderReview = true;
        }
    }

    // now save
    if (symbolTable.GetChanges() != null)
    {
        symbolTable.AcceptChanges();
    }
}

1 个答案:

答案 0 :(得分:0)

好的我不确定为什么AcceptChanges实际上没有做任何事情,但我将我的代码稍微改为下面的代码,它适用于任何人的未来参考

Dataset.SymbolsDataTable tempSymbolsTable = new Dataset.SymbolsDataTable();
tempSymbolsTable = (Dataset.SymbolsDataTable)symbolTable.GetChanges();

                if (tempSymbolsTable != null)
                {
                    symbolAdapter.Update(tempSymbolsTable);
                    tempSymbolsTable.Dispose();
                }