2016-11-18 1 views
0

Brauchen dabei helfen zu ändern, habe ich einige verschiedene Lösungen gepostet versucht, aber kein Glück, ich habe ein Modell für die Daten:Wie zu bestimmen und einen Objekttyp

public class ReceivingDataTableModel 
{ 
    [Display(Name ="[[[Serial Number]]]")] 
    public int DT_RowId { get; set; } 
} 

Und ich brauche von einem Ergebnis zu kommen db aber in dieser Zeile:

var converted = Expression.Convert(Expression.Constant(value), property.Type); 

Wert ist String und property.Type ist Int (DT_RowId)

ich bekomme diese Fehlermeldung:

kein Zwang Operator zwischen Typen definiert System.string und System.Int32

+0

Haben Sie es von einem int a konvertieren möchten Schnur? Ein einfaches '" "+ DT_RowId sollte zum Trick gehören. – RandomStranger

Antwort

0

Was Sie auf dieser Linie tun ist wahrscheinlich nicht das, was Sie wollen. Expression.Convert wird für verwendet, um Typumwandlungsoperatoren zur Laufzeit zu konstruieren, wie im Detail beschrieben here.

Wenn Sie etwas vom Typ String konvertieren müssen Int32 zu geben, müssen Sie die Int32.Parse Methode verwenden, wie

folgt
Int32 value = Int32.Parse("2016"); 

Weitere Informationen dieses Verfahren und ein paar andere für detailliertere Umwandlung werden beschrieben here. Ähnliche Methoden existieren für Double (Double.Parse), Decimal (Decimal.Parse) und andere primitive Typen.

EDIT: Wenn Sie es als LINQ expersion in der Lage sein wollen, können Sie den Code in diesem Beispiel verwendete versuchen:

String value = "10"; 

var expr = Expression.Lambda(Expression.Call(typeof(Int32).GetMethod("Parse", new Type[] { typeof(String) }), Expression.Constant(value))); 

Int32 result = (Int32)expr.Compile().DynamicInvoke(); 
+0

ja ist nicht alles, hier ist der Code 'public static Ausdruck > Vergleichen (AusdruckTyp Operation, Zeichenfolge EigenschaftName, Zeichenfolge Wert) { var Parameter = Ausdruck.Parameter ((typeof (T))," p "); var property = Ausdruck.Property (Parameter, EigenschaftName); var konvertiert = Ausdruck.Convert (Ausdruck.Konstant (Wert), Eigenschaft.Typ) var body = Ausdruck.MakeBinär (Vorgang, Eigenschaft, konvertiert); } ' – Arthur85

+0

Können Sie erklären, was Sie mit diesem Code erreichen möchten? Es sieht etwas kompliziert aus. –

+0

Wählen Sie aus einer Datenbank aus und geben Sie einen Lambda-Ausdruck zurück, um einen json zu erstellen und eine dynamische Tabelle mit der select2-Bibliothek zu rendern. – Arthur85

Verwandte Themen