Linq相当于T_SQL

时间:2011-06-07 18:44:57

标签: c# linq-to-sql

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 个答案:

答案 0 :(得分:2)

如果这是您经常运行的事情,最简单的方法是将该查询放入视图中。然后,视图上的LINQ语法很简单。

如果您已经准备好了解LINQ,那么请在此处解决:

http://msdn.microsoft.com/en-us/vbasic/bb688085(vb样本)

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

这种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)

答案 1 :(得分:2)

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
  });