C#Linq将2个ObservableCollections合并为新的

问题描述 投票:0回答:1

我有3个类(T1和T2数据来自SQLite文件)

T1(EmployeeEntity-> Id,FirstName,LastName,DepartmentFK) << DepartmentKey是T2.Id的外键

T2(部门实体-> ID,部门)

T3(部门雇员-> ID,FirstName,LastName,DepartmentFK,Department] << Id应该与T1.Id相同(使更改更容易保存)

在我的视图模型中,我创建了一个新的ObservableCollection public ObservableCollection<DepartmentEmployee> EmployeesView,并希望用来自2个SQLite表的数据填充这些,这就是我的操作方式:

    get
    {
        var t1 = new ObservableCollection<EmployeeEntity>(_emp.GetAll().ToObservable());
        var t2 = new ObservableCollection<DepartmentEntity>(_dep.GetAll().ToObservable());
        var result = t1.Join(t2, t => t.DepartmentFK, t => t.Id, (EmployeeEntity, DepartmentEntity) =>
        {
            var t3 = _mapper.Map<EmployeeEntity, DepartmentEmployee>(EmployeeEntity);
            t3 = _mapper.Map(DepartmentEntity, t3);
            return t3;
        });
        _employeesview = result.ToObservable();
        return _employeesview;
    }

这适用于我的视图(我可以显示名字,姓氏和适当的部门(基于外键)),但是当我尝试将更改保存回去时,它将更改错误的记录。我的问题是:

T1

1 - Test - User - 2
2 - Another - User -3
3 - Third - User - 1

T2

1 - Development
2 - HR
3 - Production

结果]

T3

2 - Test - User - 2 - HR
3 - Another - User - 3 - Production
1 - Third - User - 1 - Development

因此它“杀死”了我的员工ID,并将其替换为部门的ID。那我该如何解决呢?


添加。信息:这些是我制作的映射

        cfg.CreateMap<DepartmentEntity, Departments>();
        cfg.CreateMap<Departments, DepartmentEntity>();
        cfg.CreateMap<EmployeeEntity, DepartmentEmployee>();
        cfg.CreateMap<DepartmentEmployee, EmployeeEntity>();
        cfg.CreateMap<DepartmentEntity, DepartmentEmployee>();

我有3个类(T1和T2数据来自SQLite文件)T1(EmployeeEntity-> ID,FirstName,LastName,DepartmentFK)<< DepartmentKey是T2.Id T2的外键(DepartmentEntity-> ...

c# linq observablecollection
1个回答
0
投票

愚蠢的我,在我的映射中不得不忽略“ Id”

© www.soinside.com 2019 - 2024. All rights reserved.