2016-07-15 18 views
0

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

Str2
string 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?

+0

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. –

+1

Das ist erlaubt: 3 Ich habe keinen Fehler – Sherlock

+1

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

Antwort

-1

verwenden

string myString3="abcdef"; 
    var items1=Dababase1Repository.Find<MyTableClass1>(x=>string.Concat(x.Str1+x.Str2)==myString3).List(); 
+0

Dies erzeugt auch den gleichen Laufzeitfehler – user946106

+0

Es funktioniert gut an meinem Ende. – King