我在 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 谓词来最小化代码。我不喜欢使用任何插件来制作这个。希望有人能帮忙。
编辑
我想我的意思是"How to update data in using Dynamic linq"
编辑2
所以这是真实的场景。用户/客户可以更新他们的信息,例如名字、姓氏、地址、城市.. 等等。不是一次,而是能够一个一个地更新信息。
那么这是什么意思呢?好的,我可以创建一个可以更新名字的方法,接下来是姓氏,地址等等。但是如果我这样做,它将消耗大量代码。如果 linq 中有一个代码可以执行 SQL 在更新数据时所做的事情,那么我只需要一个获取列名并设置其值的代码。希望我能解释清楚。
编辑3
我将问题从How to update data in linq using predicates?
改为How to update column data using sql query in linq?
,因为我误解了谓词的真正含义。