Есть ли способ найти строки, в которых нет совпадения?или нуль? - PullRequest
0 голосов
/ 04 февраля 2019

В настоящее время я создаю приложение Attendance, но мне сложно сопоставить расписание, в котором нет журналов, чтобы пометить его как отсутствующее.

На данный момент так выглядит моя таблица

Текущая таблица Current Table

На данный момент в таблице будет отображаться только то, в каком расписании есть журналы посещаемости.Так что я не вижу, есть ли расписание, которое сотрудник не показал, какой он или она отсутствует.

Я попытался сопоставить его с нулем, но в итоге ничего не отображается.

Это мой код для заполнения таблицы

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