有什么方法可以找到没有匹配项的行?还是为空?

时间:2019-02-04 06:44:03

标签: c# excel linq xaml wpfdatagrid

我目前正在创建一个出勤应用程序,但是我很难匹配一个没有任何日志将其标记为缺席的日程表。

目前,这就是我的桌子的样子

当前表 Current Table

目前,该表将仅显示哪个时间表上有出勤记录。因此,我看不到是否有员工没有列出的时间表。

我尝试将其与null匹配,但最终没有显示任何内容。

这是我用来填充表格的代码

public void Main()
        {
            // works but not the midnight cross stuff
            var final = (from a1 in EmployeeAttendanceLogs
                         join a2 in EmployeeAttendanceLogs on a1.ID equals a2.ID
                         join t1 in EmployeeScheduleList on a1.ID equals t1.ID
                         join t2 in EmployeeScheduleList on a2.ID equals t2.ID
                         join d1 in EmployeeDetails on t1.ID equals d1.EmployeeID
                         where ((a1.LogStatus == 0 && t1.In == t2.In) && (((((a1.ActualLog - t1.In ).Ticks) > TimeSpan.FromHours(1).Ticks) || t1.In.Date == a1.ActualLog.Date) && t1.In.Date == a1.ActualLog.Date )) && (a2.LogStatus == 1 && t1.Out == t2.Out && (t2.Out.Date == a2.ActualLog.Date) )
                         select new
                         {
                             User_ID = t1.ID,
                             Name = d1.EmployeeName,
                             Scheduled_In = t1.In,
                             Actual_Login = a1.ActualLog,
                             Scheduled_Out = t2.Out,
                             Actual_Out = a2.ActualLog
                         }).Distinct(). ToList();

            tbContainer = StaticClasses.ToDataTable(final);

            dgvAttendance.ItemsSource = emp.CalculateEmployeeAttendance(tbContainer);
        }

这些是我的数据来源

员工时间表文件

Employee Schedule

员工出勤日志文件

Attendance Logs

根据日志,员工5没有记录,这是网格的输出

Output

所以它没有显示,但是我也试图将我的类设置为具有逻辑性

员工日程安排类

public class EmployeeSchedule
{
    public int ID { get; set; }
    private string _name;
    public string Name
    { get
        {
            if (_name == null)
            {
                _name = "";
            }
            return _name;
        }
        set { _name = value; }
    }

    public string scheduleeIn { get; set; }

    private string _actualIn;
    public string actualIn
    {
        get
        {
            if (_actualIn == null) 
            {
                _actualIn = "Absent";
            }
            return _actualIn;
        }
        set { _actualIn = value; }

    }

    public string scheduleOut { get; set; }

    public string _actualOut;
    public string actualOut
    {
        get
        {
            if (_actualOut == null)
            {
                _actualOut = "Absent";
            }
            return _actualOut;
        }
        set { _actualOut = value; }

    }

    private string _tardiness;
    public string tardiness
    {
        get
        {
            if (_tardiness == null) 
            {
                _tardiness = "Absent";
            }
            return _tardiness;
        }
        set { _tardiness = value; }
    }

    private string _workHours;
    public string workHours
    {
        get
        {
            if (_workHours == null) 
            {
                _workHours = "Absent";
            }
            return _workHours;
        }
        set { _workHours = value; }
    }    
}

已经有一天我试图弄清楚了,但是似乎没有显示出来或将时间表标记为缺席。

任何想法或建议都会有很大帮助。谢谢

编辑:数据源

这是我的出勤记录的数据源

出勤记录

public class Actual
    {
        public int ID { get; set; }
        public DateTime ActualLog { get; set; }
        public int LogStatus { get; set; }
        public DateTime date { get; set; }
    }

员工时间表

public class Emp1
{
    public int ID { get; set; }
    public DateTime In { get; set; }
    public DateTime Out { get; set; }
}

0 个答案:

没有答案