我得到了兩個使用相同接口的實體。我想從實體框架兩個結果我得到合併的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幫助:) –