Есть ли способ найти строки, у которых нет совпадений? или ноль?

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

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

Текущая таблицаЕсть ли способ найти строки, у которых нет совпадений? или ноль?

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

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

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

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

И это мои источники данных

Файл расписания сотрудников

Есть ли способ найти строки, у которых нет совпадений? или ноль?

Файл журнала посещаемости сотрудников

Есть ли способ найти строки, у которых нет совпадений? или ноль?

Судя по логам у Сотрудника 5 нет записи и это вывод в сетку

Есть ли способ найти строки, у которых нет совпадений? или ноль?

Так что это не отображается, но я также попытался настроить свой класс на логику

Класс расписания сотрудников

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

Кажется, внешнее соединение - это то, что вы ищете

Mehrdad Dowlatabadi 04.02.2019 07:46

@MehrdadDowlatabadi, не могли бы вы привести пример, если не возражаете?

Nate 04.02.2019 07:51

чтобы помочь, не могли бы вы для начала показать нам какой-нибудь оператор SQL, который работает с БД, тогда мы могли бы помочь перевести его на Linq

Jazb 04.02.2019 07:51

@JohnB Я забыл упомянуть, что у меня нет БД, у меня просто есть два файла, а затем поместите их в список.

Nate 04.02.2019 07:52

@JohnB Я просто получаю данные из двух файлов: файлов excel и .dat. затем поместите синицу в список. затем сравните их с помощью linq

Nate 04.02.2019 07:56

JohnB: вы не должны начинать с оператора SQL, вы должны начать с правильных определений таблиц и правильных требований. Без них вы не знаете, вернет ли оператор SQL то, что вы хотите.

Harald Coppoolse 04.02.2019 09:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
58
0

Другие вопросы по теме