【发布时间】:2015-02-23 01:39:41
【问题描述】:
我想要做的是编辑匹配的行并更改列的值,但它一直返回 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();
}
}
【问题讨论】:
-
你的代码有什么错误?它会进入循环吗?
-
@dotnetstep 它永远不会收到任何错误,但它永远不会点击 symbolTable.AcceptChanges();
-
因为它从不进入循环,所以你的表在加载后不会改变,所以不会发现任何变化,所以无法接受变化。
-
@dotnetstep 我确实需要提一下,它确实进入了循环内部,并且确实到达了更改行中值的行
-
尝试 Dataset.SymbolsRow row = query.FirstOrDefault();而不是你的 AsParallel
标签: c# linq dataset strongly-typed-dataset