C# Datenbank Linq Lambda-AusdrückeWie kombinieren zwei Stiche in zwei Felder C# Datenbank Linq Lambda-Ausdrücke
Str1 und STR2 sind beide String-Typ.
In Tabellenwerte vorhanden sind, für die Felder Str1 und
Str2string myString1="abc";
var items1=Dababase1Repository.Find<MyTableClass1>(x=>x.Str1==myString1).List(); //WORKING
string myString2="def";
var items1=Dababase1Repository.Find<MyTableClass1>(x=>x.Str2==myString2).List(); //WORKING
string myString3="abcdef";
var items1=Dababase1Repository.Find<MyTableClass1>(x=>(x.Str1+x.Str2)==myString3).List(); //NOTWORKING
Kein Kompilierungsfehler aber generiert Laufzeitfehler:
NotSupportedException war durch Benutzercode (zur Laufzeit) nicht behandelte
Ich habe ToString, Trim, Concat und andere mögliche Wege verwendet. Ich denke, str1 und str2 behandeln nicht als String (zur Laufzeit), aber kein Fehler bei der Kompilierung
So lösen Sie dieses Problem?
Sie benötigen einen String-Variable außerhalb der Lambda 2 Strings zu kombinieren und sie gegen 'myString3' vergleichen. Eine String-Verkettung führt zu einer neuen Zeichenkette statt einer bestehenden und wird möglicherweise derzeit nicht in einem Lambda unterstützt. –
Das ist erlaubt: 3 Ich habe keinen Fehler – Sherlock
welcher Typ sind 'x.Str1' und' x.Str2'? Wenn sie 'Objekt' sind, möchten Sie vielleicht hinzufügen '(x.Str1.ToString() + x.Str2.ToString())' – kurakura88