我在SQL这样的查询和正常工作:如何使用linq中的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"
EDIT2
所以这是真实的情景。用户/客户可以更新他们的信息,例如名字,姓氏,地址,城市..等等,但不能一次性更新信息。
那么这是什么意思?好吧,我可以创建一个方法,可以更新名字,接下来是姓氏,地址等等。但是如果我这样做,它会消耗大量的代码。如果只有在linq中有一个可以做SQL更新数据的代码,那么我只需要一个获取列名并设置其值的代码。希望我能解释清楚。
EDIT3
我从How to update data in linq using predicates?
改问题How to update column data using sql query in linq?
对我误解谓词的真正意义。
我想你误会什么*谓词*指... – McGarnagle
我将非常感激,如果你会纠正我。谢谢。 – fiberOptics
如果你想使用变量作为列名,使用普通的sql。而且,雅,不要忘记享受SQL注入。 –