Ich habe seit drei Tagen ein Problem und konnte bei Google und Stackoverflow keine Lösung finden.
Ich habe eine nullable int-Eigenschaft in meinem Modell. Wenn ich versuche, eine Funktion auf diese Spalte mithilfe der dynamischen where-Klausel anzuwenden, wird ein Fehler angezeigt: "Methoden für Typ 'Int32?' sind nicht zugänglich ".
Angeblich ist meine Modellstruktur -
public class MyTestModel
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
}
Jetzt möchte ich eine Suchabfrage haben, die dynamisch vom Frontend aus erstellt wird. Beispielsweise -
Where("Name.StartsWith(\"t\") and ParentId.ToString().StartsWith(\"1\") ");
Meine Lösung hat alle anderen Typen berücksichtigt, aber nullbare Typen funktionieren hier nicht. Ich habe auch versucht, nach Null zu suchen, aber es funktioniert nicht. (Lesen Sie dies aus einem anderen Forum):
Where("Name.StartsWith(\"t\") and (ParentId != null and ParentId.ToString().StartsWith(\"1\")) ");
Where("Name.StartsWith(\"t\") and (ParentId != null and ((int?)ParentId).ToString().StartsWith(\"1\")) ");
Versuchen Sie ParentId.Value.ToString().StartsWith(\"1\")
. Sie müssen nicht nach null
suchen, wenn die Abfrage auf einem SQL Server ausgeführt wird, da es in SQL keine NULL-Ausnahmen gibt. Wenn die Abfrage "lokal" (für eine .NET-Sammlung) ausgeführt wird, müssen Sie nach null
suchen.