Der Grund, warum Sie das nicht tun können, ist, weil die Abfrage Select()
Ihre Abfrage nicht tatsächlich gegen die Datenbank ausführt, also versucht EntityFramework, diesen C# -Code in SQL zu konvertieren, was er offensichtlich nicht kann.
Sie können die Abfrage ausführen, indem Sie ToList()
aufrufen, bevor Sie Select()
aufrufen.
var test = _context.SomeDatabaseTable
.ToList()
.Select(c => new SomeViewModel
{
AssignedUsers = c.AssignedToUserIDs.Split(';')
});
Diese seine eigenen Probleme hat aber, wenn Sie Ihre Abfrage nicht richtig gefiltert, bevor ToList()
ausgeführt wird, werden Sie beginnen, über Performance-Probleme kommen, die wächst schlimmer als die Größe Ihres db bekommt.
Was Sie mit dieser foreach
Schleife versuchen, ist auch ungültig. Es sollte nicht sogar kompilieren, also entfernen Sie das und verwenden Sie, was ich oben gezeigt habe, nahm ich an, dass die AssignedUsers-Eigenschaft vom Typ 'List' war, wenn Sie die einzelnen Elemente, die geteilt wurden, ändern können, können Sie eine andere Select()
Methode an die Ende Split()
Warum kann man nicht einfach draußen tun? – Sajeetharan
Soweit ich weiß, ist dies bei EF nicht möglich, da der Code nicht in gültiges SQL konvertiert werden kann. – HimBromBeere
Sie können die Antwort anschließend mit einem Ergebnis wiederholen.Foreach (r => doSomething); –