Ich habe diese Einheiten:Linq Abfrage mit geschweiften Klammern für anonyme Aktion/Funktion Körper
public class Parent: AllDependant
{
/*Properties goes here*/
}
public class Children: AllDependant
{
/*Properties goes here*/
}
Dann habe ich allDependants
Variable mit TypeOf List<AllDependant>
, die einige Eltern und Kinder in Rechtsträger-Mix halten.
Später möchte ich von ihnen wählen und so etwas tun:
var selectedDependantInfos = allDependants
.Select(dependant =>
{
if (dependant is Parent)
{
var parent = dependant as Parent;
return new { Name = parent.Name, SomeSpecialInfo = parent.ParentInfo };
}
else
{
var child = dependant as Children;
return new { Name = child.Name, SomeSpecialInfo = child.ChildInfo }
}
});
Notiere die spezifische Eigenschaft für Kind und Eltern mich verlangen die Eigenschaft auf ein neues Modell für die UI-Anzeige zu werfen und erhalten die ist nicht Anliegen der Entität. Ich kann die spezielle Eigenschaft nicht in die AllDependant-Basisklasse einfügen, da ich den Eigenschaftsnamen auf so viele Dateien umwandeln muss, einschließlich * .ascx, was mühsam ist. Aber es getan, indem Sie die Linq Select
Erweiterung Methode oben, aber ich denke nur an diese:
Frage: Wie kann ich das gleiche in Linq Query?
Dieser Fehler auf dem select
Schlüsselwort und den geschweiften Klammern geben:
var selectedDependantInfos = from dependant in allDependants
select
{
/* the same if statement goes here */
}
Was denken Sie, indem es in Linq-Syntax gewinnen wird? – ChrisWue
Der Fehler liegt daran, dass das Schlüsselwort 'new' fehlt. 'wähle neues {..}'. – alexn
@ChrisWue, nicht ändern, nur zu denken, wie Funktionskörper in Linq Abfrage genau wie wir Funktionskörper in Lambda tun können. – CallMeLaNN