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