私は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
これが実際のシナリオです。ユーザー/クライアントは、名前、姓、住所、都市などの情報を一度に更新するのではなく、情報を 1 つずつ更新することができます。
それで、それはどういう意味ですか?わかりました、名前を更新できるメソッドを作成できます。次は姓、住所などです。しかし、これを行うと、多くのコードが消費されます。データを更新する際にSQLが行うことを実行できるコードがlinqにある場合にのみ、列名を取得してその値を設定するコードが必要になります。うまく説明できれば幸いです。
編集3
述語の本当の意味を誤解していたため、質問を からHow to update data in linq using predicates?
に変更しました。How to update column data using sql query in linq?