Итак, я сейчас создаю приложение AttendanceApp, используя C# WPF
.У меня есть DataGrid
, который отображает и рассчитывает показатели посещаемости автоматически из двух файлов, которые взяты из файла посещаемости и фактических журналов посещаемости.
Я попытался сопоставить два файла с помощью UserID
, что работает, нокогда я начинаю иметь дело более чем с 1 днем.Я получаю дубликаты и неверные данные.
В настоящее время у меня есть данные за 5 дней только для 2 пользователей, но у пользователя # 1 уже есть 8 списков, когда у него должно быть только 2 за 2 дня посещаемости
Дубликаты записей
Но если данных достаточно только на 1 день, данные выглядят корректными
OneДневная посещаемость
Итак, у меня есть дубликаты и ошибочные данные на моем DataGrid
Вот мои источники данных
Расписание сотрудников
Журналы посещаемости сотрудников
И это мой код, который я использую для заполнения DataGrid
public void Main()
{
List<Emp1> emps;
List<Actual> actuals;
actuals = emp.GetActual(@"C:\Users\IT\Desktop\Sample\SampleActual.dat");
emps = GetEmpSched();
var final = (from a1 in actuals
join a2 in actuals on a1.ID equals a2.ID
join t1 in emps on a1.ID equals t1.ID
join t2 in emps on a2.ID equals t2.ID
where (a1.LogStatus == 0) && (a2.LogStatus == 1)
select new
{
User_ID = t1.ID,
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);
}
Как видите, я добавил Distinct()
, чтобы попытаться отфильтроватьout, если это работает.
Журналы посещаемости работают так, как если бы его ноль был временем входа, а если его - один - временем ожидания.
, поэтому я объявил emps
дважды для фильтрациичто все LogStatus == 0
будетдля фактического времени, а Logstatus == 1
для фактического времени.
Любые идеи будут полезны.