Ich habe diese Abfrage in SQL und es funktioniert gut:
update userinfo set Interest = 0.98 where userid = 313
Und ich möchte es in Linq machen, also habe ich Folgendes vorbereitet:
public class TableDataDTO
{
public string Columnname { get; set; }
public string Value { get; set; }
public Type DataType { get; set; }
}
Implementierung:
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;
}
}
Aber es gibt mir diesen Fehler:
Der Abfragesyntax ist ungültig. In der Nähe des Schlüsselworts 'SET'
Ich werde mit verschiedenen Spalten umgehen, also muss ich Linq-Prädikate verwenden, um den Code zu minimieren. Ich mag es nicht, irgendwelche Plugins zu benutzen, um dies zu erreichen. Hoffentlich kann mir jemand helfen.
Bearbeiten
Ich denke, was ich meine ist "Wie aktualisiere ich Daten in Linq mit dynamischem Linq"
Bearbeiten2
Also das ist das wirkliche Szenario. Benutzer/Klienten können ihre Informationen aktualisieren, z.B. Vorname, Nachname, Adresse, Stadt.. etc.. nicht auf einmal, sondern fähig, die Informationen nach und nach zu aktualisieren.
Was bedeutet das? Ok, ich kann eine Methode erstellen, die den Vornamen aktualisieren kann, als nächstes den Nachnamen, die Adresse und so weiter.. Aber wenn ich das tue, wird es viele Codezeilen verbrauchen. Wenn es nur einen Code in Linq gäbe, der das tut, was SQL beim Aktualisieren von Daten tut, dann würde ich nur einen Code benötigen, der den Spaltennamen abruft und seinen Wert setzt. Hoffentlich habe ich es gut erklärt.
Bearbeiten3
Ich habe die Frage von Wie aktualisiere ich Daten in Linq mit Prädikaten?
zu Wie aktualisiere ich Spaltendaten mit SQL-Abfrage in Linq?
geändert, da ich die eigentliche Bedeutung von Prädikat missverstanden habe.