我得到了两个使用相同接口的实体。我想从实体框架两个结果我得到合并的IKurs
一个列表:投射和合并两个相同接口但不同类型的列表
public async Task<IEnumerable<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>>> GetCourses(bool takeXtr)
{
IEnumerable<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>> result = new List<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>>();
if (takeXtr)
using (var context = new Context())
{
var courses = context.XtrCourses.Include(x=>x.TeachersToCourses).Where(_someCourseFilterForAgs);
result.Concat(await courses.ToListAsync()).Cast<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>>();
}
using (var context = new Context())
{
var courses = context.AgsCourses.Include(x=>x.TeachersToCourses).Where(_someCourseFilterForAgs);
result.Concat(await courses.ToListAsync()).Cast<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>>();
}
return result;
}
正如你所看到的,我试着用 .Cast<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>>()
铸造他们两个(即引发InvalidCastException)
这些都是我的Course
类,既实现IKurs<T1<T2>, T1>
但它们的T1和T2是不同的(但是仍然它们使用相同的接口):
public class XtrCourse : Core_Xtr_Course, IKurs<XtrTeacherToCourse, XtrAdditionalTeacherData>
{
public int Nr { get; set; }
// properties
public ICollection<XtrTeacherToCourse> TeachersToCourses { get; set; }
}
public class AgsCourse : Core_Ags_Course, IKurs<AgsTeacherToCourse, AgsAdditionalTeacherData>
{
public int Nr { get; set; }
// properties
public ICollection<AgsTeacherToCourse> TeachersToCourses { get; set; }
}
public interface IKurs<TTeacherToCourse, TAdditionalTeacherData>
where TTeacherToCourse : ITeacherToCourse<TAdditionalTeacherData>
where TAdditionalTeacherData: IAdditionalTeacherData
{
int Nr { get; set; }
ICollection<TTeacherToCourse> TeachersToCourses { get; set; }
}
public interface ITeacherToCourse<T> where T : IAdditionalTeacherData
{
int Nr { get; set; }
T AdditionalTeacherData { get; set; }
}
public interface IAdditionalTeacherData
{
// properties
}
类AgsTeacherToCourse
个XtrTeacherToCourse
都实现ITeacherToCourse
类AgsTeacherToCourse
和XtrTeacherToCourse
都实现ITeacherToCourse
我怎样才能将它们合并到一个列表?
实际上,两个课程列表都来自不同的环境。这就是为什么我在GetCourses()
两次启动上下文。
哇。完善。 'out'正是问题所在。 Thx帮助:) –