簡體   English   中英

在LINQ繼承中使用泛型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM