Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGrid不应出现重复数据_C#_Wpf_Linq_Xaml_Wpfdatagrid - Fatal编程技术网

C# DataGrid不应出现重复数据

C# DataGrid不应出现重复数据,c#,wpf,linq,xaml,wpfdatagrid,C#,Wpf,Linq,Xaml,Wpfdatagrid,因此,我目前正在使用C WPF创建AttendanceApp。我有一个DataGrid,可以根据考勤文件和实际考勤日志中的两个文件自动显示和计算考勤指标 我已经尝试过用一个用户ID匹配这两个文件,但是当我开始处理超过一天的文件时,它就起作用了。我得到重复和错误的数据 目前,我只有5个用户2天的数据,但用户1已经有8个列表,而它应该只有2天的出席时间 重复条目 但当数据只够一天时,数据看起来是正确的 一天的出席 因此,我的DataGrid中存在重复和错误的数据 以下是我的数据来源 员工时间表

因此,我目前正在使用C WPF创建AttendanceApp。我有一个DataGrid,可以根据考勤文件和实际考勤日志中的两个文件自动显示和计算考勤指标

我已经尝试过用一个用户ID匹配这两个文件,但是当我开始处理超过一天的文件时,它就起作用了。我得到重复和错误的数据

目前,我只有5个用户2天的数据,但用户1已经有8个列表,而它应该只有2天的出席时间

重复条目

但当数据只够一天时,数据看起来是正确的

一天的出席

因此,我的DataGrid中存在重复和错误的数据

以下是我的数据来源

员工时间表

员工考勤记录

这是我用来填充数据网格的代码

正如您所看到的,我添加了Distinct以尝试过滤掉它是否有效

考勤日志的工作原理类似于如果它是零,则表示时间进入,如果它是一,则表示时间退出

因此,我声明了两次emp以进行筛选,以便所有LogStatus==0将用于实际的超时,LogStatus==1将用于实际的超时


任何想法都会有帮助。

重复发生的原因是您仅基于用户id加入表。您的代码无法根据日期区分它们。这就是为什么第一天的日程表会与第一天的实际时间和第二天的数据结合在一起。明天,当你有另一组实际值时,你会让每一行重复自己三次

< P>修复它,在包含日期、月份、年份的两个表中添加另一个字段,然后在加入时,考虑字段

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