2015-10-30 3 views
0

У меня есть запрос Linq, который хорошо работает, но мне нужно написать SQL Query Может ли кто-нибудь помочь мне написать его? этот запрос будет искать базу данных foreacha.h и a.HV в view с фильтрами времени и модели и в конце концов он проверяет параметр Filter.M, что если выбран будет поиск всех данных, выбранных в этом DropDownCheckBoxes` Как может Я пишу это где и выбираю часть в команде SQL?Запрос Linq к SQL-запросу

ret1 = (from a in View 
     where 
      a.LastRefreshTime>=Filter.From && a.LastRefreshTime<=Filter.To && a.ModelCode == mdlCode && 
      Filter.PN.Select(epn => epn.Substring(0, 11)).Contains(a.H) && 
      Filter.PN.Select(epn => epn.Substring(14, 2)).Contains(a.HV) 

     select new RData 
     { 
      v = a.v, 
      Date = a.LastRefreshTime, 
      UserId = a.UserId, 
      M = a.Name, 
     }).Distinct().AsQueryable(); 
ret = ret1.Where(nr => 
    Filter.M == null || !Filter.M.Any() || Filter.M.Contains(nr.M) 
).ToList(); 
+0

это работает, но по какой-то причине я должен написать запрос SQL, я только что обновил мой quetion – lol

+0

Да, но что * SQL * вы уже писали и каким образом * это * не работает? –

+0

Мне нужно знать, как написать этот запрос, часть «содержит» в sql – lol

ответ

0

Вот начало для вас

select a.v v, 
     a.LastRefreshTime "Date", 
     a.UserId, 
     a.Name 
    from a 
where a.LastRefreshTime>= arg_filter_from 
    and a.LastRefreshTime<= arg_filter_to 
    and a.ModelCode = arg_mdlCode 
    . 
    . 
    . 

В этом запросе вы должны заменить «Arg _...» с соответствующими значениями или аргументы, которые вы хотите.

Содержит приблизительно эквивалентен "IN" в SQL. Например:

where a.Name in ('jim', 'bob', 'joe') 

В также может быть использован с подвыборки, который примерно то, что я думаю, что Filter.PN.Select делает, хотя я не эксперт LINQ. Пример:

where a.H in (Select foo from PN_Table) 

Или простой пример продолжения на моем предыдущем примере имя:

where a.Name in (select first_name from table) 
0

Если предполагается, что список Filter.PN представляет таблицу FilterPN в базе данных SQL, которая будет вашим конвертированы код для первого запроса Linq

  1. select distinct a.v, a.LastRefreshTime, a.UserId, a.Name
    from [view] a where a.LastRefreshTime>= 'Filter.From' and
    a.LastRefreshTime<='Filter.To' and a.ModelCode = 'mdlCode' and
    exists(select top 1 * from FilterPN where Substring(epn, 1, 11) = a.H) and exists(select top 1 * from FilterPN where Substring(e
    введите код здесь pn, 15, 2) = a.HV)

думает заменить enquoted переменных Ur реальных значения «Filter.To» ...

+0

Спасибо. Я хочу знать tha, этот запрос возвращает много строк, и у меня есть класс, такой как открытый класс RData { public string V; ... общественная строка D; } in Выбрать часть Мне нужно их прочитать и поместить в этот класс – lol

+0

, а другой peoblem - это то, что мои данные фильтра являются данными в dropdownboax. так что xcan я пишу это как sql-запрос? – lol

Смежные вопросы