Я работаю над проектом, который использует Legacy .net Framework 4.x. Я использую LINQ здесь, но он не ведет себя так, как я ожидал, и я не уверен, какие ошибки я сделал.CREATE TABLE wp_cli_card_jf_sub
(
cli_card_jf_list_no VARCHAR(20) NOT NULL,
com_md_code CHAR(6) NOT NULL,
prod_no CHAR(8) NOT NULL,
prod_add VARCHAR(12) NOT NULL,
batch_no VARCHAR(12) NOT NULL,
promotion_id BIGINT NOT NULL,
multiplier DECIMAL(8,2) NOT NULL,
`priority` INT NOT NULL,
start_ts DATETIME NOT NULL,
end_ts DATETIME NOT NULL,
PRIMARY KEY (
cli_card_jf_list_no,
com_md_code,
prod_no,
prod_add,
batch_no,
promotion_id
)
);
< /code>
Я пытаюсь найти запись, которая соответствует определенным условиям, используя код ниже. Я ожидаю, что если результат запроса пуст (это означает, что никакие записи не выполняют условия), он должен выполнить < /p>
wjf.cli_card_jf_num = Convert.ToDecimal(detail.Clicardjfnum);
< /code>
Если он находит записи, он должен занять множитель из первой записи (FirstOrDefault()) и используйте это значение.
Однако на самом деле происходит то, что независимо от того, найдена ли запись, она всегда выполняет эту строку:
wjf.cli_card_jf_num = Convert.ToDecimal(detail.Clicardjfnum) *
Convert.ToDecimal(query.FirstOrDefault());
Интересно, что когда записи не найдены, query.firstordefault () возвращает 0,0.
Есть идеи, почему это происходит? Какие ошибки я сделал?var query = context.wp_cli_card_jf_sub
.Where(s => s.cli_card_jf_list_no == deserializedDMLparModels.Clicardjfretno
&& s.com_md_code == Userid
&& s.prod_no == detail.Prodno)
.Select(s => s.multiplier);
if (query == null) // This condition will likely never be true
{
wjf.cli_card_jf_num = Convert.ToDecimal(detail.Clicardjfnum);
}
else
{
wjf.cli_card_jf_num = Convert.ToDecimal(detail.Clicardjfnum) *Convert.ToDecimal(query.FirstOrDefault());
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... quals-null
Почему этот LINQ не равняется нулевым? ⇐ C#
Место общения программистов C#
1749971567
Anonymous
Я работаю над проектом, который использует Legacy .net Framework 4.x. Я использую LINQ здесь, но он не ведет себя так, как я ожидал, и я не уверен, какие ошибки я сделал.CREATE TABLE wp_cli_card_jf_sub
(
cli_card_jf_list_no VARCHAR(20) NOT NULL,
com_md_code CHAR(6) NOT NULL,
prod_no CHAR(8) NOT NULL,
prod_add VARCHAR(12) NOT NULL,
batch_no VARCHAR(12) NOT NULL,
promotion_id BIGINT NOT NULL,
multiplier DECIMAL(8,2) NOT NULL,
`priority` INT NOT NULL,
start_ts DATETIME NOT NULL,
end_ts DATETIME NOT NULL,
PRIMARY KEY (
cli_card_jf_list_no,
com_md_code,
prod_no,
prod_add,
batch_no,
promotion_id
)
);
< /code>
Я пытаюсь найти запись, которая соответствует определенным условиям, используя код ниже. Я ожидаю, что если результат запроса пуст (это означает, что никакие записи не выполняют условия), он должен выполнить < /p>
wjf.cli_card_jf_num = Convert.ToDecimal(detail.Clicardjfnum);
< /code>
Если он находит записи, он должен занять множитель из первой записи (FirstOrDefault()) и используйте это значение.
Однако на самом деле происходит то, что независимо от того, найдена ли запись, она всегда выполняет эту строку:
wjf.cli_card_jf_num = Convert.ToDecimal(detail.Clicardjfnum) *
Convert.ToDecimal(query.FirstOrDefault());
Интересно, что когда записи не найдены, query.firstordefault () возвращает 0,0.
Есть идеи, почему это происходит? Какие ошибки я сделал?var query = context.wp_cli_card_jf_sub
.Where(s => s.cli_card_jf_list_no == deserializedDMLparModels.Clicardjfretno
&& s.com_md_code == Userid
&& s.prod_no == detail.Prodno)
.Select(s => s.multiplier);
if (query == null) // This condition will likely never be true
{
wjf.cli_card_jf_num = Convert.ToDecimal(detail.Clicardjfnum);
}
else
{
wjf.cli_card_jf_num = Convert.ToDecimal(detail.Clicardjfnum) *Convert.ToDecimal(query.FirstOrDefault());
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79656969/why-this-linq-doesnt-equals-null[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия