2010-02-23 5 views
1

I했습니다 다음과 같은 방법 서명이 하나 개의 인터페이스 :주조는 SQL로

public interface ITag 
{ 
    int M_Id { get; set; } 
    string M_Name { get; set; } 
} 

그리고 위의 인터페이스를 구현하는 클래스가 있습니다

[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; 
    } 
} 

을 그리고 난 검색 할을 내 DB에서 행을 보내 그들을 보내십시오

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; 
} 

하지만 문제는 캐스팅 (반환 (IQueryable) 결과입니다;) 나는 t NewsTag가 ITag 인터페이스의 하위 클래스 임에도 불구하고 사용하려고하지 않습니다.

도움을 주시면 감사하겠습니다.

답변

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; 
}