在Linq To SQL中进行转换

uza*_*y95 1 c# casting linq-to-sql

我有一个界面有以下方法签名:

public interface ITag
{
    int M_Id { get; set; }
    string M_Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个实现上面接口的类:

[Table(Name="News")]
public class NewsTag:ITag
{
    [Column(Name="id",isPrimaryKey = true)]
    public int M_Id
    {
        get; set;
    }

    [Column(Name = "name")]
    public string M_Name
    {
        get; set;
    }

    [Column(Name = "extraField")]
    public string M_ExtraField
    {
        get;
        set;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想从我的数据库中检索行并发送它们

public IQueryable<ITag> fGetNewsTags(int id)
{
    var result = from news in context.GetTable<NewsTag>()
                 where news.M_Id == id
                 select news;

    return (IQueryable<ITag>)result;
}
Run Code Online (Sandbox Code Playgroud)

但问题是即使NewsTag是ITag接口的子类,我尝试使用的转换(返回(IQueryable)结果;)也无法正常工作.

任何帮助,将不胜感激.

小智 5

尝试下面

public IQueryable<ITag> fGetNewsTags(int id)
{
    var result = from news in context.GetTable<NewsTag>()
                 where news.M_Id == id
                 select (ITag)news;

    return result;
}
Run Code Online (Sandbox Code Playgroud)