[英]Using Generics with LINQ Inheritance
使用Visual Studio的O / R設計器,我創建了許多從基類(稱為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?)_
我(認為)我理解為什么會這樣,但是一直無法找到解決方案。 任何建議,指導將不勝感激。
嘗試這個:
public static IQueryable<T> GetSCOs<T>(SCODataContext dc) where T : SCO
{
return dc.SCOs.OfType<T>();
}
適用於LINQ-Entities,不確定是否適用於LINQ-SQL。 試試看。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.