Linq эквивалент T_SQL - PullRequest
       0

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

2 голосов
/ 07 июня 2011
SELECT Employees.EmployeeId,Employees.FirstName,Employees.LastName
FROM   Database.dbo.Employees Employees
where Employees.FirstName not in
(select FirstName from Customers)    
and LastName not in(select LastName from Customers) and IsEmployeeActive=1

union

select CustomerId,FirstName,LastName from Customers 

Я новичок в LINQ-SQL и пытаюсь выучить его.

Это то, что я пытался (все еще работает) .. Я уверен, что есть лучший способ:

 var innerQuery = from user in Database.Customers
                         select new
                                    {
                                        Customer.CustomerID,
                                        Customer.FirstName,
                                        Customer.LastName
                                    };

        var userQuery = (from employee in Database.Employees
                         from customer in Database.Customers
                         where
                             employee.FirstName.ToLower().Trim() != customer.FirstName.ToLower().Trim() &&
                             employee.LastName.ToLower().Trim() != customer.LastName.ToLower().Trim()
                         select new
                                    {
                                        employee.EmployeeId,
                                        employee.FirstName,
                                        employee.LastName
                                    });

      var test=  innerQuery.Union(userQuery);

Ответы [ 2 ]

2 голосов
/ 07 июня 2011
var q = 
  (from employee in Database.Employees
  where !Database.Customers.Any(c => employee.FirstName == c.FirstName) &&
    employee.IsEmployeeActive
  select new
  {
    employee.EmployeeId,
    employee.FirstName,
    employee.LastName
  }).Union(
  from customer in Database.Customers
  select new
  {
    customer.CustomerID,
    customer.FirstName,
    customer.LastName
  });
2 голосов
/ 07 июня 2011

Если это то, что вы будете регулярно выполнять, самый простой подход - поместить этот запрос в представление.Тогда синтаксис LINQ в представлении прост.

Если у вас есть желание разбираться в LINQ, попробуйте здесь:

http://msdn.microsoft.com/en-us/vbasic/bb688085 (образцы vb)

http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx (c # samples)

Этот VB-подход будет очень близок, но потребует некоторой отладки, так как он не в моей голове.

    Dim q = (From e In db.Employees Where e.IsEmployeeActive=1 _
    Select EntityID = e.EmployeeId, e.FirstName, e.LastName).Union(From c In db.Customers _
    Select EntityID = c.CustomerId, c.FirstName, c.LastName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...