powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Подскажите с LINQ
6 сообщений из 6, страница 1 из 1
Подскажите с LINQ
    #39534785
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет, подскажите плиз как можно переписать linq -запрос.
Есть класс и есть метод
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
    class MyClass
    {
        public DateTime  dt { get; set; }
        public bool IsBreak { get; set; }
    }
        private void initialize()
        {
            DateTime tmp;

            List<MyClass> lst = new List<MyClass>();

            //элементы добавляются в произвольном порядке

            lst.Add(new MyClass { dt = DateTime.Now });

            tmp = DateTime.Now.AddMinutes(-10);
            lst.Add(new MyClass { dt = tmp });

            tmp = DateTime.Now.AddMinutes(10);
            lst.Add(new MyClass { dt = tmp });

            tmp = DateTime.Now.AddMinutes(-20);
            lst.Add(new MyClass { dt = tmp });

            tmp = DateTime.Now.AddMinutes(11);
            lst.Add(new MyClass { dt = tmp, IsBreak =true });

            // перед добавлением этого элемента хочу проверить 
            // существует ли среди имеющихся элементо списка lst
            // такой элемен MyClass, у которого IsBreak =true 
            // и если сделать сортировку по возрастанию списка по полю dt
            // этот элемент окажется строго перед добавляемым элементом

            // сортированный список
            // MyClass { DateTime.Now.AddMinutes(-10)}
            // MyClass { DateTime.Now.AddMinutes(-20)}
            // MyClass { DateTime.Now}
            // MyClass { DateTime.Now.AddMinutes( 10)}
            // MyClass { DateTime.Now.AddMinutes( 11),IsBreak =true} -- элемент есть


            //добавляемый элемент
            tmp = DateTime.Now.AddMinutes(12);
            lst.Add(new MyClass { dt = tmp });

        }



Пока что получился только вот такой вариант
Код: c#
1.
 lst.OrderByDescending(p => p.dt).Where(p1 => p1.dt < tmp).First().IsBreak


работает плохо, так как падает, если не находится такой элемент и еще дополнительно нужно делать проверки.
Как можно переписать linq-запрос с использованием Any? Спасибо
...
Рейтинг: 0 / 0
Подскажите с LINQ
    #39534797
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub, lst.Any(p1 => p1.dt < tmp && p1.IsBreak)
...
Рейтинг: 0 / 0
Подскажите с LINQ
    #39534798
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
lst.OrderByDescending(p => p.dt).Where(p1 => p1.dt < tmp).Select(n => (bool?) n.IsBreak).FirstOrDefault() == true
...
Рейтинг: 0 / 0
Подскажите с LINQ
    #39534799
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buservb_sub, lst.Any(p1 => p1.dt < tmp && p1.IsBreak)не, ему нужно сначала отобрать последнюю позицию, а потом проверять ее на IsBreak
...
Рейтинг: 0 / 0
Подскажите с LINQ
    #39534802
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Код: c#
1.
lst.OrderByDescending(p => p.dt).Where(p1 => p1.dt < tmp).Select(n => (bool?) n.IsBreak).FirstOrDefault() == true

Собсно, в данном случае даже и проще
Код: c#
1.
lst.OrderByDescending(p => p.dt).Where(p1 => p1.dt < tmp).Select(n => n.IsBreak).FirstOrDefault()
...
Рейтинг: 0 / 0
Подскажите с LINQ
    #39534840
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за помощь.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Подскажите с LINQ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]