正在尝试用LINQ更新C#中的DataRow
本文关键字:更新 中的 DataRow LINQ | 更新日期: 2023-09-27 18:29:52
我试图在DataTable中查找并更新特定的DataRow。根据我的搜索,我尝试了一些东西,下面的代码似乎是我能得到的最接近的。linq将返回一行。对于该行,我想更新列值(Status、StopTime、Duration)。我一辈子都找不到该怎么做。。我试过选角,但我是linq的新手,不知道如何更新这些值。
private DataTable downloadProcStatusTable;
void UpdateDataDownloadProcedureList(ProcedureStats ProcStats)
{
var currentStatRow = from currentStat in downloadProcStatusTable.AsEnumerable()
where currentStat.Field<String>("ProcedureName") == ProcStats.ProcName
select currentStat;
}
当前的查询实际上会给您一个IEnumerable<DataRow>
。你需要这样做才能得到实际的行:
var currentStatRow = (from currentStat in downloadProcStatusTable.AsEnumerable()
where currentStat.Field<String>("ProcedureName") == ProcStats.ProcName
select currentStat).SingleOrDefault();
然后,您应该能够使用currentStatRow
变量来修改列值。
大纲
- 从数据库中加载现有实体(除非您有一个可以重新附加的实体,在这种情况下可以避免此附加查询)
- 根据需要更新属性
- 使用
SubmitChanges()
将更改提交回数据库
实施
我不太确定变量和名称在哪里,但这应该会给你一个好的开始。。。
void UpdateDataDownloadProcedureList(ProcedureStats ProcStats)
{
var currentStatRow = (from currentStat in downloadProcStatusTable.AsEnumerable()
where currentStat.Field<String>("ProcedureName") == ProcStats.ProcName
select currentStat).FirstOrDefault();
currentStatRow.Status = ProcStats.Status;
currentStatRow.StopTime = ProcStats.StopTime;
currentStatRow.Duration = ProcStats.Duration;
downloadProcStatusTable.SubmitChanges();
}