2009-12-11 2 views
1

Как перевестиТранслейтинг Sql для Linq

select *from 
    (
    select EmployeeID,FirstName,LastName,Region from Employees where city 
    in ('London','Seattle') 
    ) 
    x 
where x.Region is not null 

в Linq эквиваленте.

Я попытался (но нулевые значения также выбран)

LinqDBDataContext Context = new LinqDBDataContext(); 

    var query = from emps in 

        (
         from empls in Context.Employees 
         where empls.City == "London" || empls.City == "Seattle" 
         && empls.Region != null 
          select new 
           { 
           FirstName = empls.FirstName, 
           LastName = empls.LastName, 
           City = empls.City, 
           Region = empls.Region 
           } 
        ) 
       select emps; 


      GridView1.DataSource = query; 
      GridView1.DataBind(); 
+0

Не удалось упростить ваш запрос следующим образом: выбрать EmployeeID, FirstName, LastName, Region from Сотрудники, в которых город в ('Лондон', 'Сиэтл') И регион НЕ НУЛЛ –

+0

Да, это может быть. Я исправлю это – user215675

+1

Я только что проверил ваш запрос через Linqer. Вот что он придумал:.! с т в сотрудниках где (новая строка [] { "Лондон", "Сиэтл"}) содержит (t.City) && t.Region = нуль выбрать новый { t.EmployeeID, t.FirstName, t.LastName, t.Region } –

ответ

2

Это ваши круглые скобки. Вы пропускаете их в своем заявлении OR вашего города.

LinqDBDataContext Context = new LinqDBDataContext(); 

    var query = from emps in 

        (
         from empls in Context.Employees 
         where (empls.City == "London" || empls.City == "Seattle") 
         && empls.Region != null 
          select new 
           { 
           FirstName = empls.FirstName, 
           LastName = empls.LastName, 
           City = empls.City, 
           Region = empls.Region 
           } 
        ) 
       select emps; 


      GridView1.DataSource = query; 
      GridView1.DataBind(); 
+0

Да, скобка сделала это. :) – user215675

2

Threadpool, вы должны взглянуть на продукт под названием Linqer (я не имею никакой связи с ним). Это фантастически. Он преобразует SQL-запросы в LINQ. Мне еще предстоит встретить запрос, с которым он не справится.

+0

Где ссылка на продукт? – user215675

+0

+1 для информации. – user215675

1

Ваш SQL может быть reritten как:

select EmployeeID,FirstName,LastName,Region 
from Employees 
where city in ('London','Seattle') 
and Region is not null 
2

Вам нужно изменить, где положение, чтобы быть:

где (empls.City == "Лондон" || empls. Город == "Сиэтл") & & empls.Region! = NULL

Без скобок вы получите аннулирует с Лондоном

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