C# 尝试用LINQ更新C中的数据行
我试图在DataTable中查找并更新一个特定的DataRow。根据我的搜索,我尝试了一些方法,下面的代码似乎是我能得到的最接近的代码。linq将返回一行。对于该行,我想更新列值Status、StopTime和Duration。我一辈子都找不到该怎么做。。我尝试过铸造,但我是linq新手,不知道如何更新这些值C# 尝试用LINQ更新C中的数据行,c#,linq,c#-4.0,C#,Linq,C# 4.0,我试图在DataTable中查找并更新一个特定的DataRow。根据我的搜索,我尝试了一些方法,下面的代码似乎是我能得到的最接近的代码。linq将返回一行。对于该行,我想更新列值Status、StopTime和Duration。我一辈子都找不到该怎么做。。我尝试过铸造,但我是linq新手,不知道如何更新这些值 private DataTable downloadProcStatusTable; void UpdateDataDownloadProcedureList(ProcedureStat
private DataTable downloadProcStatusTable;
void UpdateDataDownloadProcedureList(ProcedureStats ProcStats)
{
var currentStatRow = from currentStat in downloadProcStatusTable.AsEnumerable()
where currentStat.Field<String>("ProcedureName") == ProcStats.ProcName
select currentStat;
}
概述
从数据库加载现有实体,除非您有一个可以重新附加的实体,在这种情况下,您可以避免此附加查询
根据需要更新属性
使用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();
}
概述
从数据库加载现有实体,除非您有一个可以重新附加的实体,在这种情况下,您可以避免此附加查询
根据需要更新属性
使用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();
}
目前的查询实际上为您提供了一个IEnumerable。您需要执行以下操作才能获得实际行:
var currentStatRow = (from currentStat in downloadProcStatusTable.AsEnumerable()
where currentStat.Field<String>("ProcedureName") == ProcStats.ProcName
select currentStat).SingleOrDefault();
然后,您应该能够使用currentStatRow变量修改列值。当前的查询实际上为您提供了一个IEnumerable。您需要执行以下操作才能获得实际行:
var currentStatRow = (from currentStat in downloadProcStatusTable.AsEnumerable()
where currentStat.Field<String>("ProcedureName") == ProcStats.ProcName
select currentStat).SingleOrDefault();
然后,您应该能够使用currentStatRow变量修改列值