У меня есть этот запрос в 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?
, потому что неправильно понял истинное значение предиката.
uinfo
будет просто содержать все элементыinstance.userinfoes
, которые удовлетворяют условию. - person Jason Larke   schedule 25.06.2012