Ich habe ein klasse:
public class ViewModel
{
public string Name { set; get; }
public List<SimpleViewModel> Parameters
{
set
{
NotDeletedParameters = value.Where(t => !t.Deleted).ToList();
parameters = value;
}
get
{
return parameters;
}
}
private List<SimpleViewModel> parameters;
public ViewModel()
{
Parameters = new List<SimpleViewModel>();
}
public List<SimpleViewModel> NotDeletedParameters{ set; get; }
}
Es gibt 2 Parameterlisten in dieser Klasse: Parameters
und NotDeletedParameters
.
Wie kann ich einstellen? NotDeletedParameters = value.Where(t => !t.Deleted).ToList();
wenn ich ein gesetzt habe Parameters
Eigentum.
Wenn ich diesen Code verwende, NotDeletedParameters
hat immer noch 0 Elemente in der Liste. Irgendwelche Ideen?
Antworten:
2 für die Antwort № 1NotDeletedParameters Liste wäre leer, weilSie setzen eine neue Eigenschaft List auf Parameter, die möglicherweise keine Parameter gelöscht hat. Wenn Sie die Listenelemente von Parameter bearbeiten, um gelöschte Parameter festzulegen, wird die Liste NotDeletedParameters nicht aktualisiert, da sie über eine eigene Kopie verfügt, die zugewiesen wurde Initialisierung der Parameter
Also, geben Sie stattdessen eine gefilterte Liste von Parametern in NotDeletedParameter zurück.
public class ViewModel
{
public string Name { set; get; }
public List<SimpleViewModel> Parameters
{
set
{
parameters = value;
}
get
{
return parameters;
}
}
private List<SimpleViewModel> parameters;
public ViewModel()
{
Parameters = new List<SimpleViewModel>();
}
public List<SimpleViewModel> NotDeletedParameters{
get {
return parameters .Where(t => !t.Deleted).ToList();
}
}
}
1 für die Antwort № 2
Sie können dieses Problem wahrscheinlich vermeiden, indem Sie NotDeletedParameters eine Get-Only-Eigenschaft erstellen, die die Liste im Handumdrehen erstellt:
public List<SimpleViewModel> NotDeletedParameters
{
get
{
return Parameters.Where(t => !t.Deleted).ToList();
}
}
(Ich würde auch empfehlen, eine IEnumerable-Anweisung anstelle einer Liste zurückzugeben und die return-Anweisung in Parameter.Where (t =>! T.Deleted) .ToList () zu ändern. AsReadOnly ()