【问题标题】:C# Linq Join 2 ObservableCollections into new oneC# Linq 将 2 个 ObservableCollections 加入新的一个
【发布时间】:2019-11-03 14:44:44
【问题描述】:

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

T1 (EmployeeEntity --> Id, FirstName, LastName, DepartmentFK)

T2 (DepartmentEntity --> Id, Department)

T3 (DepartmentEmployee --> Id, FirstName, LastName, DepartmentFK, Department)

在我的视图模型中,我创建了一个新的 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>();

【问题讨论】:

    标签: c# linq observablecollection


    【解决方案1】:

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

    -->

    cfg.CreateMap<DepartmentEntity, DepartmentEmployee>().ForMember(dest => dest.DepartmentFK, opt => opt.MapFrom(src => src.Id)).ForMember(dest => dest.Id, act => act.Ignore());
    

    成功了 :)

    【讨论】:

      猜你喜欢
      • 2012-09-11
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多