powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq to sql (сравнить даты)
11 сообщений из 11, страница 1 из 1
Linq to sql (сравнить даты)
    #37462322
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE TABLE [dbo].[BankTransfersTable]
(
	[NR]                [int] NOT NULL,
	[Data]              [datetime] NOT NULL,
	[Firma]             [nvarchar]( 255 ) NOT NULL,
	[Paskirtis]         [nvarchar](MAX) NOT NULL,
	[Suma]              [money] NOT NULL,
	[sAssignmentNotes]  [nvarchar]( 1024 ) NULL,
	[mAssignedSum]      [money] NULL,
	[PakeiteSuma]       [nvarchar]( 256 ) NULL,
	[Country]           [char]( 2 ) NULL,
	CONSTRAINT [PK_BankTransfersTableTest] PRIMARY KEY CLUSTERED([NR] ASC)WITH (
	    PAD_INDEX = OFF,
	    STATISTICS_NORECOMPUTE = OFF,
	    IGNORE_DUP_KEY = OFF,
	    ALLOW_ROW_LOCKS = ON,
	    ALLOW_PAGE_LOCKS = ON
	) ON [PRIMARY]
) ON [PRIMARY]
есть
Код: plaintext
1.
2.
3.
4.
5.
6.
класс
{
public string data { get; } // == "20110930"
public string firma { get; }
public string paskirtis { get; }
public decimal suma { get; }
}
надо зделать условие where
Код: plaintext
1.
2.
3.
4.
5.
6.
                        _NR = (from x in c.BankTransfersTables
                               where
                               (x.Data.ToShortDateString().Replace(".", "") == _ls.data) &&
                               (x.Firma == v.firma &&
                               (x.Paskirtis == v.paskirtis) &&
                               (x.Suma == v.suma))
                               select x.NR).FirstOrDefault().ToString();
Как ? :)
...
Рейтинг: 0 / 0
Linq to sql (сравнить даты)
    #37462362
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf, дату сделать датой (или привести к оной) Я так понял в базе с часами мин сек?

Код: plaintext
1.
(x.Data >= _ls.data && x.Data < _ls.data.AddHours(24)) &&
...
Рейтинг: 0 / 0
Linq to sql (сравнить даты)
    #37462407
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в базе DateTime (например "2011-09-16 00:00:00.000")
в классе "20110916" и это стринг
...
Рейтинг: 0 / 0
Linq to sql (сравнить даты)
    #37462415
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал так, он не нашёл... хотя совпадения есть
Код: plaintext
(x.Data >= DateTime.ParseExact(v.data, "yyyyMMdd", provider) && x.Data < DateTime.ParseExact(v.data, "yyyyMMdd", provider).AddHours(24)) &&
...
Рейтинг: 0 / 0
Linq to sql (сравнить даты)
    #37462425
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calfв базе DateTime (например "2011-09-16 00:00:00.000")
в классе "20110916" и это стринг ну так переведите его в датетайм :)
...
Рейтинг: 0 / 0
Linq to sql (сравнить даты)
    #37462432
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос посмотрите
...
Рейтинг: 0 / 0
Linq to sql (сравнить даты)
    #37462818
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

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

Код: plaintext
DateTime.ParceExact(x.Data, "yyyyMMdd",  provider) == _ls.data
...
Рейтинг: 0 / 0
Linq to sql (сравнить даты)
    #37462849
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoria,

не, _ls.data - это string.



buser,

похоже работает, где-то что-то в другом месте глючит..
...
Рейтинг: 0 / 0
Linq to sql (сравнить даты)
    #37462863
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

тьфу, я имела в виду x.Data к строке yyyyMMdd привести
...
Рейтинг: 0 / 0
Linq to sql (сравнить даты)
    #37463659
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfЕсть таблица
Код: plaintext
(x.Data.ToShortDateString().Replace(".", "") == _ls.data)

Неправильный подход. Нужно плясать от обратного: кастить _ls.data в дату и сравнивать .
...
Рейтинг: 0 / 0
Linq to sql (сравнить даты)
    #37466743
ГРУ.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
посмотрите, что возвращает x.Data.ToShortDateString().Replace(".", "") есть подозрение, что вернет строку типа "30092011". проверьте региональные настройки. а вообще согласен, что подход не верный. измените класс на

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
класс
{
public DateTime data { get; } 
public string firma { get; }
public string paskirtis { get; }
public decimal suma { get; }
}

так и правильней и удобней. избавит вас от лишних проблем и конвертаций типов. ваше условие будет проше и понятней. в базе-то у вас все равно datetime.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
_NR = (from x in c.BankTransfersTables
                               where
                               (x.Data== _ls.data) &&
                               (x.Firma == v.firma &&
                               (x.Paskirtis == v.paskirtis) &&
                               (x.Suma == v.suma))
                               select x.NR).FirstOrDefault().ToString();

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


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