powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / работа с датой на LINQ
5 сообщений из 5, страница 1 из 1
работа с датой на LINQ
    #37427089
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет всем! У меня в таблице есть 2 поля с типом date:
Start_date и Finish_date

Например,:
Start_date Finish_date
30.08.2011 02.08.2011
06.09.2011 08.09.2011
29.09.2011 07.10.2011

Скажите - можно ли с помощтю Linq обращаться к этим данным или их нужно опереводить в формат yyyy-mm-dd ?
Каким образом с помощью linq можно выбрать все занятые дни в месяце (например, в сентябре):
01.09.2011
02.09.2011
06.09.2011
07.09.2011
08.09.2011
29.09.2011
30.09.2011
...
Рейтинг: 0 / 0
работа с датой на LINQ
    #37427131
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если можно не приводить к виду yyyy-mm-dd, а использовать dd.mm.yyyy, то:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
DataClasses1DataContext ddc = new DataClasses1DataContext();
var query = from m in ddc.Table
                where (m.Start_date.Month == "08" && m.Finish_date.Month == "09")
	     select m;
var query1 = from m1 in ddc.Table
                where (m1.Start_date.Month == "09" && m1.Finish_date.Month != "10")
	     select m1;
var query2 = from m2 in ddc.Table
                where (m2.Start_date.Month == "09" && m2.Finish_date.Month == "10")
	     select m2;
Правда он не понимает почему-то что такое .Month
таким образом у нас в query будут все даты между августом и сентябрём, в query1 будет весь сентябрь, а в query2 будет сентябрь-октябрь.

далее нужно будет уже вручную убирать из query и query2 несентябрьские даты.


Скажите - есть ли получше алгоритм?
...
Рейтинг: 0 / 0
работа с датой на LINQ
    #37427474
ГРУ.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Students,

Немного не понял, что надо сделать.

Скорее всего поля Start_date и Finish_date имеют тип Nullable<DateTime>, потому и не видно свойства Month. Воспользуйся свойством Value.

Приводить ни к какому виду не надо. работа проходитс с типом DateTime.

а чтоб получит весь сентябрь попробуйте так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
            int month = 9;
            
            List<DateTime> result = table
                .Where(wh => wh.Start_date.Value.Month == month)
                .Select(se => se.Start_date.Value)
                .ToList();
            
            List<DateTime> tempRes = table
                .Where(wh => wh.Finish_date.Value.Month == month)
                .Select(se => se.Finish_date.Value)
                .ToList();
            
            result.AddRange(tempRes);
...
Рейтинг: 0 / 0
работа с датой на LINQ
    #37428019
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudentsStart_date Finish_date
30.08.2011 02.08.2011
06.09.2011 08.09.2011
29.09.2011 07.10.2011

Код: plaintext
1.
2.
int month = 9;
List<Table> items = ctx.Tables.Where(d => d.Start_date.Month == month || d.Finish_date.Month == month).ToList();
List<DateTime> result = items.Select(d => EachDay(d.Start_date, d.Finish_date, month)).SelectMany(d => d).OrderBy(d => d).ToList<DateTime>();

EachDay
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public static IEnumerable<DateTime> EachDay(DateTime from, DateTime to, int month)
{
    for (DateTime date = from.Date; date.Date <= to.Date; date = date.AddDays(1))
    {
        if (date.Month == month)
        {
            yield return date;
        }
    }
}
...
Рейтинг: 0 / 0
работа с датой на LINQ
    #37428132
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо большое
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / работа с датой на LINQ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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