super_user Ответов: 1

Sql to LINQ запрос без результата


Я пробую этот SQL-запрос, и этот запрос показывает результаты

select  distinct 
tblvv.MID,
tblrv.ownername,

from tblvv
join tblrv on tblrv.ID=tblvv.MID
join tblre on tblre.RID = tblrv.RID
WHERE tblre.Region ='uk'  and
StartDate = '2014-02-01 00:00:00.000' AND 
EndDate = '2014-02-28 23:59:59.000'
order by
tblrv.ownername


Что я уже пробовал:

а потом я пытаюсь преобразовать этот запрос в LINQ

try
            {
              
                DateTime frmdate = Convert.ToDateTime(fromdate.Value.Trim().Split('T')[0]);
                DateTime tdatee = Convert.ToDateTime(todate.Value.Trim().Split('T')[0]);
                string regionvalue = regiondrop.SelectedValue;
                T1 ts = new Ts1();
               
                var dq = (from vv in ts.tblvv
                          join rv in ts.tblrv on vv.MID equals rv.ID
                          join re in ts.tblre on rv.RID equals re.RID
                          where
                          re.Region == regionvalue
                         && re.StartDate == frmdate
                          && re.EndDate == tdatee
                          orderby rv.OwnerName
                          select new
                          {
                            
                              ownername = rv.OwnerName,
                              MID= VV.MID,
                              

                          }).ToList();
                         
                GridView1.DataSource = dq;
                GridView1.DataBind();

            }
            catch (Exception)
            {
                GridView1.Visible = false;
                Label4.Text = ("No Data");

            }


но этот вышеприведенный запрос не показывает никакого результата

когда я пишу | / этот знак на этой строке

&& re.StartDate == frmdate

любить

|| re.StartDate == frmdate


тогда запрос показывает так много записей и эти записи полностью отличаются от записей которые есть в SQL запросе

кроме того, когда я устанавливаю точку останова, никакой ошибки не происходит

есть решение?

Zafar Sultan

Получаете ли Вы значения frmdat, tdatee и regionvalue такие же, как вы передаете в SQL-запросе? Вы пробовали поставить отладчик и проверить эти значения?

super_user

да я получаю эти ценности

super_user

когда Великобритания выберите из выпадающего и выберите эти даты из календаря
с даты '2014-02-01' и
на сегодняшний день '2014-02-28' .. я получаю эти значения, но не могу получить данные в gridview

1 Ответов

Рейтинг:
11

CHill60

Проблема, по-видимому, заключается в временной части ваших полей datetime - обратите внимание, что в вашем SQL вы проверяете

StartDate = '2014-02-01 00:00:00.000' AND 
EndDate = '2014-02-28 23:59:59.000'

но вы утверждаете, что даты в вашем календаре - "2014-02-01" и "2014-02-28".
Попробуйте сравнить только дату - в этой статье CP есть 2 потенциальных решения - LINQ-запрос, чтобы сравнить только дату из типа datetime[^]

Кстати, причина в том, что вы получаете много результатов, когда меняетесь
&& re.StartDate == frmdate
к
|| re.StartDate == frmdate

это потому, что вы смешиваете ANDs и ORs без каких-либо скобок.
 where
 re.Region == regionvalue
|| re.StartDate == frmdate
 && re.EndDate == tdatee
Ставить скобки на место не стоит, так как вы все равно столкнетесь с проблемой времени.


Maciej Los

5ед!