Wenn ich eine Klasse, die unten wie das Modell aussieht, so dass es mehrere Integer-Eigenschaften Cand1Votes
, Cand2Votes
und Cand3Votes
, die für jedes Election
Objekt in der Ansicht in DescendingOrder
angezeigt werden muss. Für eine bestimmte Wahl kann Cand1Votes
zuerst sein, während Cand3Votes
zweite und Cand2Votes
dritte.Wie Eigenschaften bestellen innerhalb eines Objekts
Meine Lösung ist bisher, ein List<KeyValuePair<string, int?>>
für jedes der Wahlobjekte zu erstellen, dann das an das ViewModel zu senden und dieses in der Ansicht zu verwenden.
Meine Lösung bisher arbeitet, aber ich bin auf der Suche nach einer Lösung, wobei ich dynamisch die Integer-Elemente innerhalb des Objekts bestellen können, ohne eine andere List<KeyValuePair<string, int?>>
erstellen zu müssen.
Jede Hilfe wird geschätzt. Dies ermöglicht eine beliebige Anzahl von Kandidaten in Ihrer Wahl Klasse zu sein, und Sie
public class Election
{
public int Id { get; set; }
public int TotalVotes { get; set; }
public List<Candidate> Candidates { get; set; }
public void AddCandidate(Candidate c)
{
Candidates.Add(c);
}
public List<Candidates> SortCandidates()
{
return Candidates.OrderByDescending(k => k.NumVotes).ToList();
}
}
public class Candidate
{
public string Name { get; set; }
public int NumVotes { get; set; }
}
:
Modell
public class Elections{
public int Id { get; set; }
public int? TotalVotes { get; set; }
public int? Cand1Votes { get; set; }
public string Cand2Name { get; set; }
public int? Cand2Votes { get; set; }
public string Cand2Name { get; set; }
public string Cand3Name { get; set; }
public int? Cand3Votes { get; set; }
public int? OtherVotes { get; set; }
}
public static List<KeyValuePair<string, int?>> OrderByVotes(Election election)
{
var votesArray = new List<KeyValuePair<string, int?>>()
{
new KeyValuePair<string, int?>(election.Cand1Name, election.Cand1Votes),
new KeyValuePair<string, int?>(election.Cand2Name, election.Cand2Votes),
new KeyValuePair<string, int?>(election.Cand3Name, election.Cand3Votes),
new KeyValuePair<string, int?>("Other Candidates", election.OtherVotes)
};
var result = votesArray.OrderByDescending(k => k.Value);
return result.ToList();
}
Drive-by Downvoter, Pflege für einen Grund? – hello
Ich würde erwarten, dass sich die Kandidaten in einer beobachtbaren Sammlung befinden und sie nicht als separate Variablen haben. Dann können Sie diese Sammlung als Sammlungsquelle für Ihre Ansicht festlegen und sie in der Ansicht sortieren, etwa so: http://stackoverflow.com/questions/14992072/how-do-you-sort-a-collectionviewsource-by -one-property-then-by-another-as-a-tie –
Ich bin bereit zu wetten, dass dieses Modell eine Datenbanktabelle darstellt, aber korrigieren Sie mich, wenn ich falsch liege. Es wäre einfacher, den Rat von @AmittaiShapira zu nehmen, aber wenn das keine Option ist, was genau meinst du mit der Neuordnung innerhalb des Objekts? Möchten Sie, dass 'Cand1Name' und' Cand1Votes' den niedrigsten Votenamen/Wert enthalten, 'Cand2Name' und' Cand2Votes' den nächstniedrigeren Wert und so weiter? – Sam07