【发布时间】:2011-01-08 12:26:36
【问题描述】:
我有这个存储过程,我想将其转换为 LINQ to SQL,但我遇到了一些麻烦,因为我是 LINQ 的新手(实际上,我不是 SQL 专家)而且我我没有得到预期的结果。 (我尝试从 LINQ 调用 SPROC 到 SQL,但是当我将 Period 日期时间作为 SPROC 上的参数发送时,我在 L2S 上收到一些关于该参数可以为空的错误,但我发送它也不可为空,我仍然得到相同的错误。 ) 下面是 SQL:
SELECT Persons.IDPerson,Persons.Name,Persons.PaternalName,Departments.DepartmentName,Jobs.Title, Persons.HireDate, Terminations.TerminationDate, Terminations.HireDate
FROM Persons left outer join Terminations on Persons.IDPerson = Terminations.IDPerson
left outer join Departments on Departments.idDepartment = Persons.IdDepartment
left outer join Jobs on Jobs.IDJob = Persons.IDJob
WHERE (Terminations.IDTermination is null OR Terminations.TerminationDate >= @Period)
and Terminations.HireDate <= @Period OR Persons.HireDate <=@Period
ORDER BY Persons.HireDate, Terminations.HireDate asc
到目前为止,这是我的 LINQ 代码(它可以编译,但没有给我预期的记录) Criteria.Period 是一个可为空的日期时间:
result = from emp in HRSystemDB.Persons.OfType<Employee>()
join term in HRSystemDB.Terminations on emp.IDPerson equals term.IDPerson into all
from aHire in all.Where(t => (t.IDTermination == null || t.TerminationDate.Date >= Criteria.Period.Value.Date)
&& t.HireDate.Value.Date <= Criteria.Period.Value.Date
|| emp.HireDate.Date <= Criteria.Period.Value.Date).DefaultIfEmpty()
select new DepartmentHeadCountQuery
{
FullName = emp.Name + " " + emp.PaternalName,
Department = emp.Department.DepartmentName,
JobTitle = emp.Job.Title,
TermDate = aHire.TerminationDate,
EHiredDate = emp.HireDate,
TermHireDate = aHire.TerminationDate
};
提前致谢。
【问题讨论】:
标签: c# .net sql linq stored-procedures