powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq и обрезаная дата
99 сообщений из 99, показаны все 4 страниц
Linq и обрезаная дата
    #37790077
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот моя проблема

Есть таблица в MS SQL, название - BirthDay (данные записаны как 01.01.2001) год берется просто так, потому что мне год рождения сотрудников не говорят а только день и месяц.

Так вот возникла проблемка (может быть и простая) но я что то не могу решить -
Как составить запрос (выборку дат 01.01 не учитывая года) от текущей даты + 7 дней

например сегодня 11.05 и результат запроса должен дать выборку с 11.05 по 18.05 (+ 7 дней)


Спасибо!
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37790467
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
var employees = ctx.Employees.Where(d => d.BirthDay.Month == 5 && d.BirthDay.Day >= 11 && d.BirthDay.Day <= 18);
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37790512
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
Код: c#
1.
var employees = ctx.Employees.Where(d => d.BirthDay.Month == 5 && d.BirthDay.Day >= 11 && d.BirthDay.Day <= 18);

Нет!

VIT2708Есть таблица в MS SQL, название - BirthDay (данные записаны как 01.01.2001) год берется просто так, потому что мне год рождения сотрудников не говорят а только день и месяц.Ну и исходите из того, что в БД хранится фиктивный 2001-й год. Заменяйте текущий год 2001-м и обычным способом расчитывайте границы интервала. Чтобы потом сделать select * from T where BirthDay between @from and @to , или его LINQ-аналог.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37790519
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНет!
Да!

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DateTime dateStart = DateTime.Today;
int incDays = 7;

int monthStart = dateStart.Month;
int dayStart = dateStart.Day;

int monthEnd = dateStart.AddDays(incDays).Month;
int dayEnd = dateStart.AddDays(incDays).Day;

var employees = ctx.Employees.Where(d => 
    (d.BirthDay.Month == monthStart && d.BirthDay.Day >= dayStart) || 
    (d.BirthDay.Month == monthEnd  && d.BirthDay.Day <= dayEnd)
);
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37790521
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или на сиквеле:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare @d1 as datetime
declare @d2 as datetime

set @d1 = '20110321 00:00:00'
set @d2 = '20110327 23:59:59'

select FullName, new_dob
from Contact
where cast(datediff(dd, new_dob, @d1) / 365.25 as int) - cast(datediff(dd, new_dob, @d2) / 365.25 as int) <> 0
order by new_dob
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37790550
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант на linq, если разница monthSpan <= 1 :)

Код: c#
1.
int monthSpan = (dateEnd.Year - dateStart.Year) * 12 + dateEnd.Month - dateStart.Month;
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37790564
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУindex seek нам не нужен?
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37790610
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУindex seek нам не нужен?
Пох.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37790768
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
index seek нам не нужен?
Пох.Согласен. :-)
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37792662
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправляю косяки linq-запроса, Лёня :)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
int days = 7;
var now = DateTime.Today;

var employees = from emp in ctx.Employees
                let thisYearsBirthday = emp.BirthDay.AddYears(now.Year - emp.BirthDay.Year) 
                let nextBirthday = (thisYearsBirthday >= now) ? thisYearsBirthday : thisYearsBirthday.AddYears(1)
                where nextBirthday >= now && nextBirthday < now.AddDays(days)
                select emp;
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37792954
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как так-то?!

Код: c#
1.
2.
3.
4.
5.
6.
7.
const int fakeYear = 2001;
const int days = 7;

var t1 = new DateTime(fakeYear, DateTime.Now.Month, DateTime.Now.Day);
var t2 = t1.AddDays(days);

employees = ctx.Employees.Where(e => e.BirthDay >= t1 && e.BirthDay <= t2);
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37792998
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу как так-то?!
А если мы выполним этот код 31.12.2012? :)
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793089
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНу как так-то?!
А если мы выполним этот код 31.12.2012? :)Всё можно сломать, было бы желание.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793097
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Краевой эффект.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793103
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793304
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу как так-то?!

Код: c#
1.
2.
3.
4.
5.
6.
7.
const int fakeYear = 2001;
const int days = 7;

var t1 = new DateTime(fakeYear, DateTime.Now.Month, DateTime.Now.Day);
var t2 = t1.AddDays(days);

employees = ctx.Employees.Where(e => e.BirthDay >= t1 && e.BirthDay <= t2);



Cпасибо всем работает, но надо что бы проверка была без года.
Буду экспериментировать
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793366
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

вот у меня проблема как тогда в базе поменять года не трогая дня и месяца
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793384
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Алексей К,

вот у меня проблема как тогда в базе поменять года не трогая дня и месяцаНу тогда моё решение Вам не подходит. Краевой эффект () опять же. Попробуйте развить идеи, предложенные МСУ.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793396
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Подходит, только раз в год нажимать кнопку модификации года в базе
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793404
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КVIT2708Алексей К,

вот у меня проблема как тогда в базе поменять года не трогая дня и месяцаНу тогда моё решение Вам не подходит. Краевой эффект () опять же. Попробуйте развить идеи, предложенные МСУ.

У него тоже в коде проблема что год берется текущий а в базе год остается старый
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793427
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708У него тоже в коде проблема что год берется текущий а в базе год остается старыйТолько при сравнении год игнорируется. Жертвуем index seek, но без этого походу никак.

В общем, можно как-то так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    const int Days = 7

    var nowMonth = DateTime.Now.Month;
    var nowDay = DateTime.Now.Day;

    return from e in ctx.Employees
        let t1 = new DateTime(e.BirthDay.Year, nowMonth, nowDay)
        let t2 = t1.AddDays(Days)
        where e.BirthDay >= t1 && e.BirthDay <= t2
        select e;
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793434
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

А если дата попадает на конец месяца?

Извини что много вопросов я сайт делаю и сразу изучаю Linq
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793448
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708А если дата попадает на конец месяца?Ну и что? Мне кажется, моё последнее решение работает и в этом случае. Тут надо пробовать. У меня сейчас Visual Studio под рукой нет.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793454
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Спасибо! Сейчас поэкспериментирую
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793489
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Огромнейшее спасибо я решил проблему

protected void LinqDataSource2_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
const int Days = 7;
var nowMonth = DateTime.Now.Month;
var nowDay = DateTime.Now.Day;
var filter = from f in dc.BirthDays let t1 = new DateTime(2013, nowMonth, nowDay) let t2 = t1.AddDays(Days) where f.birthday1_feild >= t1 && f.birthday1_feild <= t2 orderby f.birthday1_feild select f;
e.Result = filter;
}
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793495
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пипец, я дал готовое решение, вам мало что-ли? 12548055
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793504
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Алексей К,

Огромнейшее спасибо я решил проблему

protected void LinqDataSource2_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
const int Days = 7;
var nowMonth = DateTime.Now.Month;
var nowDay = DateTime.Now.Day;
var filter = from f in dc.BirthDays let t1 = new DateTime(2013, nowMonth, nowDay) let t2 = t1.AddDays(Days) where f.birthday1_feild >= t1 && f.birthday1_feild <= t2 orderby f.birthday1_feild select f;
e.Result = filter;
}Зачем 2013 ?! Моё решение не зависило от конкретного значения фиктивного года, хранящегося в БД.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793505
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПипец, я дал готовое решение, вам мало что-ли? 12548055 Ну не понравилось оно нам.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793528
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,


ПОДХОДИТ!!!!!!

Спасибо
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793530
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

2013 - это я так для теста
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793690
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЗачем 2013 ?! Моё решение не зависило от конкретного значения фиктивного года, хранящегося в БД.
Жестоко, Алексей, очень жестоко
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37793702
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КЗачем 2013 ?! Моё решение не зависило от конкретного значения фиктивного года, хранящегося в БД.
Жестоко, Алексей, очень жестоко Я не хотел. Так получилось.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37795420
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Если поставить другой год, то код не работает
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37795485
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Алексей К,

Если поставить другой год, то код не работаетНадо не конкретный год подставлять, а сделать как у меня написано. Посмотри внимательнее на мой код.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37796047
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу как так-то?!

Код: c#
1.
2.
3.
4.
5.
6.
7.
const int fakeYear = 2001;
const int days = 7;

var t1 = new DateTime(fakeYear, DateTime.Now.Month, DateTime.Now.Day);
var t2 = t1.AddDays(days);

employees = ctx.Employees.Where(e => e.BirthDay >= t1 && e.BirthDay <= t2);



Я использовал этот вариант, а здесь у тебя стоит год как константа
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37796347
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Алексей КНу как так-то?!

Код: c#
1.
2.
3.
4.
5.
6.
7.
const int fakeYear = 2001;
const int days = 7;

var t1 = new DateTime(fakeYear, DateTime.Now.Month, DateTime.Now.Day);
var t2 = t1.AddDays(days);

employees = ctx.Employees.Where(e => e.BirthDay >= t1 && e.BirthDay <= t2);



Я использовал этот вариант, а здесь у тебя стоит год как константаНу как так-то?! Это не последнее моё решение. Смотри тут .
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37796385
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Ой!
вижу, сейчас переделаю
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37796409
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КVIT2708У него тоже в коде проблема что год берется текущий а в базе год остается старыйТолько при сравнении год игнорируется. Жертвуем index seek, но без этого походу никак.

В общем, можно как-то так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    const int Days = 7

    var nowMonth = DateTime.Now.Month;
    var nowDay = DateTime.Now.Day;

    return from e in ctx.Employees
        let t1 = new DateTime(e.BirthDay.Year, nowMonth, nowDay)
        let t2 = t1.AddDays(Days)
        where e.BirthDay >= t1 && e.BirthDay <= t2
        select e;



А окуда взялся e.BirthDay. Year ?
это я понял - e.BirthDay, а Year - нет, даже компилятор ругается
таблица в базе
user_name - например Вася Пупкин
birthday - 01.12.2000 0:00:00
......
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37796531
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пипец, дал нормальный рабочий код. Нет, сидят, какие-то сопли пилят. Паранормально епт.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37796583
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУИсправляю косяки linq-запроса, Лёня :)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
int days = 7;
var now = DateTime.Today;

var employees = from emp in ctx.Employees
                let thisYearsBirthday = emp.BirthDay.AddYears(now.[color=red]Year [/color]- emp.BirthDay.[color=red]Year[/color]) 
                let nextBirthday = (thisYearsBirthday >= now) ? thisYearsBirthday : thisYearsBirthday.AddYears(1)
                where nextBirthday >= now && nextBirthday < now.AddDays(days)
                select emp;



emp.BirthDay.AddYears - откуда это берется, я что то не пойму и компилятор ругается
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37796884
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708, это день рождения, DateTime.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37796932
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

вот часть таблицы
имя таблицы BirthDay
поля
user - vnarchar(256)
birthday - datetime

emp.BirthDay.AddYears - я что то не пойму как его прикрутить?
даже в Intellisence среди методов нет такого.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797187
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708это я понял - e.BirthDay, а Year - нет, даже компилятор ругаетсяРугается C# компилятор, или всё-таки LINQ2SQL-провайдер? Пользуешся Entity Framework или чем-то другим?
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797197
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если пользуешся Entity Framework, то для работы с датами используй EntityFunctions Class .
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797206
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708birthday - datetime
даже в Intellisence среди методов нет такого.

birthday - нуллейбл тип? Тогда birthday.Value.AddYears
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797207
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708МСУ,

вот часть таблицы
имя таблицы BirthDay
поля
user - vnarchar(256)
birthday - datetime

emp.BirthDay.AddYears - я что то не пойму как его прикрутить?
даже в Intellisence среди методов нет такого.Ну как так?! BirthDay у тебя DateTime, а AddYears нету?
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797209
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУbirthday - нуллейбл тип? Тогда birthday.Value.AddYearsГениально!
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797217
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КVIT2708это я понял - e.BirthDay, а Year - нет, даже компилятор ругаетсяРугается C# компилятор, или всё-таки LINQ2SQL-провайдер? Пользуешся Entity Framework или чем-то другим?

использую LINQ2SQL-провайдер
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797232
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУVIT2708birthday - datetime
даже в Intellisence среди методов нет такого.

birthday - нуллейбл тип? Тогда birthday.Value.AddYears

теперь есть
щас попробую сделать
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797243
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУVIT2708birthday - datetime
даже в Intellisence среди методов нет такого.

birthday - нуллейбл тип? Тогда birthday.Value.AddYears

Вот попробовал твой код, но он выводит весь список без фильтрации

int days = 7;
var now = DateTime.Today;
var filter = from emp in dc.BirthDays
let thisYearsBirthday = emp.birthday1.Value.AddYears(now.Year - emp.birthday1.Value.Year)
let nextBirthday = (thisYearsBirthday >= now) ? thisYearsBirthday : thisYearsBirthday.AddYears(1)
where nextBirthday >= now && nextBirthday < now.AddDays(days)
select emp;
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797253
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708,

да они издеваются над тобой
ккие то нуллейбл и т.д. придумали
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797258
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

да уже сделал с фиксированным годом, а сейчас хотел попробовать что бы игнорировать год полностью, зато Linq быстрее выучу а там и EF
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797270
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708,

учись ьудешь потом тут гуру, а то не у кого спрашивать уже стало
сразу блин унижают и оскарбляют
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797275
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

мне вот помогли, ну а так много ссылок
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797299
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708,

ну ты новый потому и помогли
а мне не помогают
мне вот нужен алгоритм для рекурсивного лукапа, ну код воще то нужен а алгоритм и так ясен
никто не пишет
придется самому писать :(
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797323
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

в Linq да я новичек, я в основном на ветке ASP вопросы задаю, правда редко
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797335
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУbirthday - нуллейбл тип? Тогда birthday.Value.AddYearsГениально!
Часто пью кофе и рассматриваю осадок
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797354
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Гениально!
Часто пью кофе и рассматриваю осадок Везёт. А у меня походу вся мана к концу дня кончилась. На элементарную телепатию не хватает.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797364
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Вот попробовал твой код, но он выводит весь список без фильтрации

int days = 7;
var now = DateTime.Today;
var filter = from emp in dc.BirthDays
let thisYearsBirthday = emp.birthday1.Value.AddYears(now.Year - emp.birthday1.Value.Year)
let nextBirthday = (thisYearsBirthday >= now) ? thisYearsBirthday : thisYearsBirthday.AddYears(1)
where nextBirthday >= now && nextBirthday < now.AddDays(days)
select emp;С нулэйблом разобрались. Теперь самое время ещё раз попробовать мой код.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797416
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

А вот твой код работает

const int Days = 7;

var nowMonth = DateTime.Now.Month;
var nowDay = DateTime.Now.Day;

var filter = from f in dc.BirthDays
let t1 = new DateTime(f.birthday1.Value.Year, nowMonth, nowDay)
let t2 = t1.AddDays(Days)
where f.birthday1 >= t1 && f.birthday1 <= t2
select f;
e.Result = filter;

Я его чу-чуть модифицировал и заработало

Всем огромнейшее спасибо.
Вопросов больше нет.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797844
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТеперь самое время ещё раз попробовать мой код.
Он же нерабочий, бать?
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37797845
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Алексей К, А вот твой код работает
Код: c#
1.
const int Days = 7;



А теперь попробуй это код запустить 31 декабря :)
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37798752
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

31 декабря - выходной, а сайт для внутреннего пользования так что им никто пользоваться в этот день точно не будет
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37798790
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КТеперь самое время ещё раз попробовать мой код.
Он же нерабочий, бать? Поздно! Проект сдан в промышленную эксплуатацию. Акты подписаны. Раньше надо было думать...
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37798868
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

Он же нерабочий, бать? Поздно! Проект сдан в промышленную эксплуатацию. Акты подписаны. Раньше надо было думать...

Да проект еще не здан, это был всего лишь один из модулей а их там много будет
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37798892
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Да проект еще не здан, это был всего лишь один из модулей а их там много будетДа это у нас с МСУ небольшой междусобойчик. Не обращай внимания. :-)
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37798932
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Понял! мешать не буду
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37798956
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708МСУ, 31 декабря - выходной, а сайт для внутреннего пользования так что им никто пользоваться в этот день точно не будет
Тяжелый ты человек А 30? А 29? А 28? ...

Алексей КПоздно! Проект сдан в промышленную эксплуатацию. Акты подписаны. Раньше надо было думать...
Что же делать...
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37798963
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУVIT2708МСУ, 31 декабря - выходной, а сайт для внутреннего пользования так что им никто пользоваться в этот день точно не будет
Тяжелый ты человек А 30? А 29? А 28? ...

Алексей КПоздно! Проект сдан в промышленную эксплуатацию. Акты подписаны. Раньше надо было думать...
Что же делать...

Я тестировал 7, 20, 40 дней и все отрабатывало нормально
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37798989
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Я тестировал 7, 20, 40 дней и все отрабатывало нормальноМне тоже кажется, что всё там нормально. МСУ что-то путает.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799030
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Я тестировал 7, 20, 40 дней и все отрабатывало нормально
Относительно какого для тестировал? :)

Пипец, народ, яфшоке
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799032
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

да там 100% все нормально!!!!
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799034
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУVIT2708Я тестировал 7, 20, 40 дней и все отрабатывало нормально
Относительно какого для тестировал? :)

Пипец, народ, яфшоке

текущий день + 7 дней
текущий день + 20 дней
текущий день + 40 дней

и работает без проблем
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799047
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708текущий день + 7 дней
текущий день + 20 дней
текущий день + 40 дней

и работает без проблем

Мля, ты издеваешься? :) Потестируй, когда текущий день будет равен 30 декабря.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799099
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМля, ты издеваешься? :) Потестируй, когда текущий день будет равен 30 декабря.Ну давайте ещё к високосному году придерёмся. Там вообще возникает неопределённость, поскольку нет информации о том, високосный год или нет.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799110
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУVIT2708текущий день + 7 дней
текущий день + 20 дней
текущий день + 40 дней

и работает без проблем

Мля, ты издеваешься? :) Потестируй, когда текущий день будет равен 30 декабря.

после 30 декабря будет 31 а там и 1 января и т. д.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799115
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, как же мы все благодарны авторам федерального закона № 152-ФЗ. У нас там порой до такого архитектурного маразма доходило. Страшно вспоминать.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799117
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708,

муся че то нервничает
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799136
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

ну его вариант кода намного сложнее чем Алексей К, вот я и выбрал что попроще и если что то оперативно изменить можна
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799565
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708,

этим ты обидел мую
он скоко тут народу помогает, а ты даж спс не сказал за труды
да я за мусю че только не сделаю!!!
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799677
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosVIT2708,

этим ты обидел мую
он скоко тут народу помогает, а ты даж спс не сказал за труды
да я за мусю че только не сделаю!!!

почему не сказал!!!!!

сказал, смотри выше
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799704
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708,

аа, эт хорошо
молодец
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37799919
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУМля, ты издеваешься? :) Потестируй, когда текущий день будет равен 30 декабря.Ну давайте ещё к високосному году придерёмся. Там вообще возникает неопределённость, поскольку нет информации о том, високосный год или нет.
Мой код учитывает всё. AddYears.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37800129
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМой код учитывает всё. AddYears.AddYears делается к фиктивному году, хранящемуся в BirthDate.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37800208
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Я его сейчас изучаю. Просто мне как тому кто начал изучать Linq немного трудно его понять.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37801787
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУМой код учитывает всё. AddYears.AddYears делается к фиктивному году, хранящемуся в BirthDate.
Так нельзя делать, если текущий год високосный:
Код: c#
1.
let t1 = new DateTime(f.birthday1.Value.Year, nowMonth, nowDay)
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803217
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
AddYears делается к фиктивному году, хранящемуся в BirthDate.
Так нельзя делать, если текущий год високосный:
Код: c#
1.
let t1 = new DateTime(f.birthday1.Value.Year, nowMonth, nowDay)

Это да.
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803257
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЭто да.
Ну и что будем делать, курить Ваш говнокод или жить правильно с кодом от муси?
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803263
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К, работать с "фиктивными" датами - зло, нужно следить за корректностью даты. А оно нам нужно?
Посмотрите, как у меня, честный AddYears и AddDays , всё. Никаких танцев с бубнами по "созданию даты".
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803295
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КЭто да.
Ну и что будем делатьПредлагаю забить...
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803436
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПредлагаю забить...
Код рано или поздно упадёт ведь? ;)
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803442
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаю, что щас ответить ведь. "Срать" (с).
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803553
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Поздравляю, ты победил!!!
Ты тут самый умный и продвинутый (впрямом смысле) пацан!!!
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803580
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават, мы все говно по сравнению с твоими мозгами и опытом
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803627
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну вот, я от всей души, а ты ерничаешь
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803763
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саха, ей богу, зуб на отсечение :)
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37803843
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
AddYears делается к фиктивному году, хранящемуся в BirthDate.
Так нельзя делать, если текущий год високосный:
Код: c#
1.
let t1 = new DateTime(f.birthday1.Value.Year, nowMonth, nowDay)



СТОП!!!!!!

А текущий год высокосный и код работает, а следующий будет только через 4 года, так что всякое может быть
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37804041
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708СТОП!!!!!!
А текущий год высокосный и код работает, а следующий будет только через 4 года, так что всякое может быть
Как же с тобой трудно :)

У чела днюха 29.02.2016. Сейчас на дворе 31.12.2015. Ты запрашиваешь своим гавнокодом - дай мне днюхи за 3 мясяца.
Получим такую дату:
Код: c#
1.
new DateTime(2015, 02, 29)
...
Рейтинг: 0 / 0
Linq и обрезаная дата
    #37804689
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Не повезло этому человечику
...
Рейтинг: 0 / 0
99 сообщений из 99, показаны все 4 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq и обрезаная дата
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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