我在SQL中有这个查询,它运行良好:
update userinfo set Interest = 0.98 where userid = 313
我希望能够在LINQ中完成此操作,因此我准备了以下代码:
public class TableDataDTO
{
public string Columnname { get; set; }
public string Value { get; set; }
public Type DataType { get; set; }
}
实施:
TableDataDTO tableData = new TableDataDTO();
tableData.Columnname = "Interest";
tableData.Value = "0.98";
using (dbase instance = new dbase())
{
string predicate = string.Format("it.UserID=={0} set it.{1}={2}" ,
313, tableData.Columnname, tableData.Value);
var uinfo = instance.userinfoes.Where(predicate).FirstOrDefault();
if (uinfo != null)
{
instance.SaveChanges();
return true;
}
}
但是它给我返回了这个错误:
The query syntax is not valid. Near keyword 'SET'
我需要处理不同的列,所以我需要使用linq谓词来尽量减少代码量。 我不喜欢使用任何插件来实现。希望有人能帮忙。
编辑
我想我的意思是"如何使用动态linq更新数据"
编辑2
这是真正的场景。用户/客户可以更新他们的信息,例如名字、姓氏、地址、城市等,不是一次性更新,而是一个接一个地更新信息。
那么这意味着什么?好的,我可以创建一个方法来更新名字,下一个是姓氏,地址等等。但如果我这样做,会消耗很多代码。如果只有linq中的代码可以像SQL一样更新数据,那么我只需要一个代码来获取列名并设置其值。希望我解释得清楚。
编辑3
我已经将问题从如何使用谓词在linq中更新数据?
更改为如何使用sql查询在linq中更新列数据?
,因为我误解了谓词的真正含义。
uinfo
将仅包含满足条件的所有instance.userinfoes
元素。 - Jason Larke