Я работаю над UWP-приложением в сообществе VS2015, и я создал класс Candidate и еще один класс CandidateManager. В классе CandidateManager я создал метод getCandidateByCategory для сортировки кандидата по их номеру категории и порядковому номеру. Я вызвал метод на странице ScienceAndITClub.Xaml.cs, но теперь у меня возникла проблема с получением свойства имени отфильтрованного элемента (чтобы установить его как содержимое RBband1 radiobutton), есть красная строка под символом «.». который показывает ошибку «Оператор». не может применяться к операнду типа «void». Кроме того, всегда есть только один кандидат с определенным набором номеров категорий и серийного номера.Как получить свойство класса путем фильтрации наблюдаемой коллекции с использованием других свойств?
Вот Научном & 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)
{
}
}
Вот код кандидата класса, т.е. 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
}
Вот код класса CandidateManager, т.е. 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; } }
Кроме того, в этой программе я буду брать имена кандидатов в качестве ввода от пользователя (я еще не разработал эту функцию, поэтому я поместил все имена в виде только алфавитов), так что вы можете также сказать мне, что как преобразовать входные данные из текстового поля в свойство имени кандидата.
Надеюсь, вы поможете ... Спасибо, хорошо провели день! :)
Благодарю Марка, но теперь на линии «кандидаты.Clear();» из CandidateManager.cs, он показывает ошибку при отладке: «Исключение типа« System.NullReferenceException »произошло в SchoolElection.exe, но не было обработано в коде пользователя « –
, потому что оно никогда не назначается ... Я преодолел это с помощью строки «= new ObservableCollection() в моем примере выше. –
Большое спасибо. Я знаю, что потратил достаточно времени на ваше время, но не могли бы вы рассказать мне, что такое код в методе GetCandidateData. –