我有一些组从我的SQL查询返回的记录从哪里获得员工姓名,当月休假的他开始和结束日期雇员的叶子总数。我的问题是我得到了同一员工的两条记录,但是有不同的休假日期。现在,我想让他休假时该员工的所有日期(应结合他的两个假期数据)。如何获得在C#
我的SQL查询:
SELECT distinct emp.emp_name,
NULL as start_date,
NULL as end_date
FROM employee_details emp
WHERE emp.group_name = 'A' and
Emp_Id not in (SELECT distinct emp.Emp_Id
FROM employee_details emp, offshore_leave_calendar olc
WHERE emp.emp_id = olc.emp_id AND
emp.group_name = 'A' and
datepart(mm,olc.start_date) = datepart(mm, getdate()))
union
SELECT distinct emp.emp_name,
olc.Start_Date,
olc.End_Date
FROM employee_details emp, offshore_leave_calendar olc
WHERE emp.emp_id = olc.emp_id AND
emp.group_name = 'A' and
datepart(mm, olc.start_date) = datepart(mm,getdate())
我的上述查询的输出是:
Emp_Name start_date end_date
John
Sophia
Olivia
Davis 3/20/2017 12:00:00 AM 3/24/2017 12:00:00 AM
Clark 3/21/2017 12:00:00 AM 3/24/2017 12:00:00 AM
Paul
Thomas 3/21/2016 12:00:00 AM 3/29/2016 12:00:00 AM
Thomas 3/6/2017 12:00:00 AM 3/10/2017 12:00:00 AM
在上面的输出托马斯是两次在当月休假。所以我希望托马斯的所有日期,只要他在C#的列表中留下。输出日期应该是:
3/06/2016
3/07/2016
3/08/2016
3/09/2016
3/10/2016
3/21/2016
3/22/2016
3/23/2016
3/24/2016
3/25/2016
3/26/2016
3/27/2016
3/28/2016
3/29/2016
任何人都可以帮助我吗?
我有一个名单为:
List<LeaveData> leaveList = new List<LeaveData>();
其中LeaveData类有三个定义:
public string Emp_Name { get; set; }
public DateTime? start_date { get; set; }
public DateTime? end_date { get; set; }
反对月份的每个日期我要指派雇员,谁是员工请不要分配休假。所以我循环当月所有的日期,并写了这个代码查找日期在其员工休假:
for (int i = 0; i < dates.Length; i++)
{
for (DateTime? date = leaveList[index].start_date; date <= leaveList[index].end_date; date = date.Value.AddDays(1))
{
allDates.Add(date);
}
}
,其中指数是从0-7的计数(在这种情况下)。索引将指向我从我的SQL查询中获得的任何员工。
请分享您的C#代码。 –
按员工姓名对数据集中的记录进行分组 –
您最近在做什么?实体框架还是什么? – Worthy7