У меня есть следующие вещи:Избегайте добавления же элемента в наблюдаемых коллекции с помощью C#
ObservableCollection<dateListModel> model = new ObservableCollection<dateListModel>();
public class dateListModel
{
public string dateSelected { get; set; }
public string requestFor { get; set; }
public int id { get; set; }
public string weekDay { get; set; }
}
Добавление элемента к ObservableCollection, используя следующий код:
public void onAddClicked(object sender, EventArgs e)
{
try
{
if (model.Any (p =>string.Format("{0:yyyy-MM-dd}", p.dateSelected.ToString())==string.Format ("{0:yyyy-MM-dd}",myDatePicker.Date.ToString()) == false))
{
model.Add (new dateListModel {
dateSelected = string.Format("{0:yyyy-MM-dd}", myDatePicker.Date),
requestFor = requestFor.Items [requestFor.SelectedIndex],
id = 1,
weekDay = myDatePicker.Date.DayOfWeek.ToString()
});
listview_MenuItem.ItemsSource = model;
}
else
DisplayAlert ("Alert", "Already Exist!", "OK");
}
catch(Exception ex)
{
DisplayAlert ("Alert",ex.ToString(),"OK");
}
}
Но когда я нажимаю на кнопку Добавить это шоу «Уже Exist ", даже модель пуста. Любой, как я добавил элемент в модель и пытаюсь добавить тот же элемент снова, он позволяет добавить в ObservableCollection. Я не хочу добавлять ту же дату в мою модель. Где я ошибаюсь?
я использовал: если (model.Any (р => p.dateSelected.date == myDatePicker.Date.ToString (!))). Это не работает. Чтобы сделать работу над кодом, какой должен быть формат даты DatePicker? – Dipak
Формат даты не имеет значения, если вы используете '.Date'. Поэтому удалите '.ToString()' из вашего 'myDatePicker.Date.ToString()' и попробуйте. Также у меня была опечатка, она должна быть 'p.dateSelected.Date' вместо' p.dateSelected.date' –
Привет, спасибо. Я использовал: if (! Model.Any (p => Convert.ToDateTime (p.dateSelected.date) == myDatePicker.Date)). Хорошо работает. – Dipak