Ich arbeite an einer UWP-App auf VS2015 Community und ich habe eine Klasse Kandidat und eine andere Klasse CandidateManager gemacht. In der CandidateManager-Klasse habe ich eine Methode getCandidateByCategory erstellt, um Kandidaten anhand ihrer Kategorienummer und Seriennummer zu sortieren. Ich habe die Methode auf der Seite ScienceAndITClub.Xaml.cs aufgerufen, aber jetzt habe ich Probleme beim Abrufen der Namenseigenschaft des gefilterten Elements (um es als Inhalt von RBcand1 Radiobutton zu setzen), da ist die rote Linie unter '.' Das zeigt den Fehler "Operator". kann nicht auf Operanden vom Typ 'void' angewendet werden. " Außerdem gibt es immer nur einen Kandidaten mit einem bestimmten Satz von Kategorienummer und Seriennummer.Wie kann eine Eigenschaft einer Klasse durch Filtern einer beobachtbaren Sammlung mithilfe anderer Eigenschaften abgerufen werden?
Hier ist die Wissenschaft & ITClub.Xaml.cs:
public sealed partial class ScienceAndITClub : Page
{
private ObservableCollection<Candidate> Candidates;
public ScienceAndITClub()
{
this.InitializeComponent();
CandidateManager.GetAllCandidates(Candidates);
var v = new Candidate();
v = (CandidateManager.GetCandidatesByCategory(Candidates, CandidateCategoryNo.I, CandidateSNo.I).ToList<Candidate>);
string cand1name = v.Name;
RBcand1.Content = cand1name;
}
private void NextButton_Click(object sender, RoutedEventArgs e)
{
}
}
Hier ist der Code der Kandidaten Klasse ist, das heißt Candidate.cs:
public class Candidate
{
public int VoteCount { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public CandidateSNo S_no { get; set; }
public CandidateCategoryNo Category_no { get; set; }
}
public enum CandidateCategoryNo
{
I,
II,
III,
IV,
V,
VI
}
public enum CandidateSNo
{
I,
II,
III
}
Hier ist der Code von CandidateManager Klasse ist, das heißt, CandidateManager CS-:
class CandidateManager { public static void GetAllCandidates(ObservableCollection<Candidate> candidates) { var allCandidates = getCandidate(); candidates.Clear(); allCandidates.ForEach(p => candidates.Add(p)); } public static void GetCandidatesByCategory(ObservableCollection<Candidate> candidates, CandidateCategoryNo candidateCategory, CandidateSNo Sno) { var allCandidates = getCandidate(); var filteredCandidates = allCandidates.Where(p => p.Category_no == candidateCategory).ToList(); filteredCandidates = allCandidates.Where(p => p.S_no == Sno).ToList(); candidates.Clear(); filteredCandidates.ForEach(p => candidates.Add(p)); } private static List<Candidate> getCandidate() { var _candidate = new List<Candidate>(); _candidate.Add(new Candidate() { S_no = CandidateSNo.I, Category_no = CandidateCategoryNo.I, VoteCount = 0, Category = "Science and IT Club", Name = "A" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.II, Category_no = CandidateCategoryNo.I, VoteCount = 0, Category = "Science and IT Club", Name = "B" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.III, Category_no = CandidateCategoryNo.I, VoteCount = 0, Category = "Science and IT Club", Name = "C" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.I, Category_no = CandidateCategoryNo.II, VoteCount = 0, Category = "Dance Club", Name = "D" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.II, Category_no = CandidateCategoryNo.II, VoteCount = 0, Category = "Dance Club", Name = "E" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.III, Category_no = CandidateCategoryNo.II, VoteCount = 0, Category = "Dance Club", Name = "F" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.I, Category_no = CandidateCategoryNo.III, VoteCount = 0, Category = "Music Club", Name = "G" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.II, Category_no = CandidateCategoryNo.III, VoteCount = 0, Category = "Music Club", Name = "H" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.III, Category_no = CandidateCategoryNo.III, VoteCount = 0, Category = "Music Club", Name = "I" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.I, Category_no = CandidateCategoryNo.IV, VoteCount = 0, Category = "Social Service Club", Name = "J" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.II, Category_no = CandidateCategoryNo.IV, VoteCount = 0, Category = "Social Service Club", Name = "K" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.III, Category_no = CandidateCategoryNo.IV, VoteCount = 0, Category = "Social Service Club", Name = "L" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.I, Category_no = CandidateCategoryNo.V, VoteCount = 0, Category = "Sports Club", Name = "M" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.II, Category_no = CandidateCategoryNo.V, VoteCount = 0, Category = "Sports Club", Name = "N" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.III, Category_no = CandidateCategoryNo.V, VoteCount = 0, Category = "Sports Club", Name = "O" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.I, Category_no = CandidateCategoryNo.VI, VoteCount = 0, Category = "School Captain", Name = "P" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.II, Category_no = CandidateCategoryNo.VI, VoteCount = 0, Category = "School Captain", Name = "Q" }); _candidate.Add(new Candidate() { S_no = CandidateSNo.III, Category_no = CandidateCategoryNo.VI, VoteCount = 0, Category = "School Captain", Name = "R" }); return _candidate; } }
Auch in diesem Programm werde ich die Namen der Kandidaten als Eingabe vom Benutzer nehmen (ich habe diese Funktion noch nicht entworfen, also lege ich alle Namen als nur Alphabete), also können Sie mir bitte auch das sagen wie man eine Eingabe von der Textbox in die Namenseigenschaft eines Kandidaten umwandelt.
Hoffe, du wirst helfen ... Danke, einen schönen Tag! :)
Danke Markieren Sie aber jetzt in der Zeile "candidates.Clear();" von CandidateManager.cs, zeigt es einen Fehler beim Debuggen: "Eine Ausnahme vom Typ 'System.NullReferenceException' in SchoolElection.exe aufgetreten ist, wurde jedoch nicht in Benutzercode " –
behandelt, das ist, weil es nie zugewiesen wurde ... Ich überwand Dies ist mit der "= new ObservableCollection(); Zeile in meinem Beispiel oben. –
Vielen Dank Mark, ich weiß, ich habe genug Zeit verschwendet, aber würden Sie mir bitte sagen, was ist der Code in der GetCandidateData-Methode. –