Ich habe ein Problem mit der Dynamic Expression API. Ich kann nicht scheinen, ein DataTable-Feld mit DBNull.Value zu vergleichen. Die API soll "den Zugriff auf statische Felder oder statische Eigenschaften unterstützen. Auf jedes öffentliche Feld oder jede öffentliche Eigenschaft kann zugegriffen werden." Doch die folgende Abfrage angegeben:LINQ Dynamic Expression API, Prädikat mit DBNull.Value Vergleich
var whatever = table1.AsEnumerable()
.Join(table2.AsEnumerable(),
(x) => x.Field<int>("Table1_ID"),
(y) => y.Field<int>("Table2_ID"),
(x, y) => new { x, y})
.AsQueryable()
.Where("x[\"NullableIntColumnName\"] == DBNull.Value");
ich am Ende die Störung zu erhalten: „Keine Eigenschaft oder ein Feld‚DBNull‘existiert in Typ‚<> f__AnonymousType0`2‘“
Jedermann haben Ideen, wie man um das herum? Ich kann Submission.Field ("NullableIntColumnName") nicht in der Zeichenfolge verwenden, die entweder an die Where-Methode übergeben wird, oder andernfalls wäre ich in der Lage, mit null anstelle von DBNull.Value zu vergleichen.
Diese Lösung funktioniert nicht für mich, weil ich benutzerdefinierte Select-Teil verwende. Wenn Sie ein benutzerdefiniertes Objekt wie ein DTO in Teil auswählen verwenden, ist auch der Typ der Spalte nullfähig. – ahmet