Mohan Rajesh Komatlapalli Ответов: 3

[UWP]получение данных между двумя датами в списке в C# с помощью linq


У меня есть список, который содержит такие данные , как дата начала, Дата окончания, имя, местоположение и т. д..

Теперь я хочу написать условие, как я хочу получить данные, если, дата-время.Сегодня находится между датой начала события и датой окончания, тогда он должен получить данные в список текущих событий для этого истинного состояния

кроме того, если event_startdate-это lessthan datetime.Сегодня он должен получить данные в список pastevents.

кроме того, дата начала события id больше даты-времени.Сегодня он должен получить данные в список Upcommingevents.

Я написал условие для Ongoingevents вроде этого , оно не дает правильных результатов,

indexlist = saveList.Where(i => Convert.ToDateTime(i.event_startdate) <= DateTime.Today).Union(indexlist.Where(i => Convert.ToDateTime(i.event_endDate) >= DateTime.Today)).ToList();


Для Предстоящих Мероприятий
indexlist = saveList.Where(i => Convert.ToDateTime(i.event_startdate) > DateTime.Today).ToList();


Для прошлых событий

indexlist = saveList.Where(i => Convert.ToDateTime(i.event_startdate) < DateTime.Today).Union(indexlist.Where(i => Convert.ToDateTime(i.event_endDate) < DateTime.Today)).ToList();


Как исправить утверждения и получить правильные результаты

public class Event_Detail_Content
    {
        public string event_name { get; set; }
        public string event_location { get; set; }
        public string event_startdate { get; set; }
        public string event_endDate { get; set; }

        public int count { get; set; }
    }

public sealed partial class eventspage:page
{
List<Event_Detail_Content> indexlist = new List<Event_Detail_Content>();

List<Event_Detail_Content> saveList = new List<Event_Detail_Content>();
}


В классе eventspage записываются все вышеперечисленные операторы.
Пожалуйста, помогите мне.

Что я уже пробовал:

indexlist = saveList.Where(i => Convert.ToDateTime(i.event_startdate) <= DateTime.Today).Union(indexlist.Where(i => Convert.ToDateTime(i.event_endDate) >= DateTime.Today)).ToList();


Для Предстоящих Мероприятий
indexlist = saveList.Where(i => Convert.ToDateTime(i.event_startdate) > DateTime.Today).ToList();


Для прошлых событий

indexlist = saveList.Where(i => Convert.ToDateTime(i.event_startdate) < DateTime.Today).Union(indexlist.Where(i => Convert.ToDateTime(i.event_endDate) < DateTime.Today)).ToList();

3 Ответов

Рейтинг:
5

vijeshkumarvijayan

вы можете повторно использовать один и тот же код и изменить условие

indexlist = saveList.Where(i = Convert.ToDateTime(i.event_startdate) <= DateTime.Today && Convert.ToDateTime(i.event_startdate) <= DateTime.Today).ToList();


я думаю, что это вам точно поможет


Рейтинг:
22

vijeshkumarvijayan

я не совсем уверен,решит ли это вашу проблему, но, насколько я понимаю, следующее решение может помочь вам решить текущую ситуацию

* Только для текущих событий

если бы вы попробовали это вместо вашего существующего кода :

indexlist = saveList.Where(i = Convert.ToDateTime(i.event_startdate) <= DateTime.Today && Convert.ToDateTime(i.event_startdate) >= DateTime.Today).ToList();





indexlist = saveList.Where(i => Convert.ToDateTime(i.event_startdate) <= DateTime.Today).Union(indexlist.Where(i => Convert.ToDateTime(i.event_endDate) >= DateTime.Today)).ToList();


Рейтинг:
1

Mohan Rajesh Komatlapalli

ПРИВЕТ
@vijeshkumarvijayan

Спасибо, что сработали для текущих событий

но для прошлых событий я написал так

indexlist = saveList.Where(i => Convert.ToDateTime(i.event_startdate) < DateTime.Today).Union(indexlist.Where(i => Convert.ToDateTime(i.event_endDate) < DateTime.Today)).ToList();


Он также показывает текущие события(например, если событие начинается 4 июля 2016 года и заканчивается 7 июля 2016 года, оно не должно отображаться в прошлых событиях, потому что событие все еще продолжается). Можете ли вы помочь мне в этом?