Используя Visual Studio O / R Designer, я создал несколько классов, унаследованных от базового класса (с именем SCO
).
Унаследованные типы имеют свойство дискриминатора TypeId
, которое представляет собой строку, содержащую имя типа. Например, унаследованный класс Blog
будет иметь свойство TypeId
, равное Blog
.
Я хочу иметь возможность создать метод, который возвращает строго типизированную коллекцию любого из определенных унаследованных типов. Моя попытка этого метода заключается в следующем:
public static IQueryable<T> GetSCOs<T>(SCODataContext dc) where T : SCO
{
string targetType = typeof(T).Name;
IQueryable<T> scos = from s in dc.SCOs
where s.TypeId == targetType
select s;
return scos;
}
Когда я пытаюсь скомпилировать этот метод, я получаю следующую ошибку ...
_Cannot implicitly convert type 'System.Linq.IQueryable<SCOs.SCO>' to 'System.Linq.IQueryable<T>'. An explicit conversion exists (are you missing a cast?)_
Я (думаю), я понимаю, почему это происходит, но не смог найти решение. Любой совет, руководство будет высоко ценится.