2012-01-13 41 views
1

我想写一个自定义的类扩展。我有EDMX类,但我想解析CUSTOM类。例如Customer类具有在另一方面我的自定义类Customer有3个属性(ID,名字,姓氏)3个属性(ID,名字,姓氏)。我想分析List<Customer>List<MyCustomer>使用的扩展,但我怎么能做到这一点?如何使用扩展分析实体类到自定义实体类?

public partial class MyVisitorAdvertisement 
{ 
    public int ID { get; set;} 
    public int VID { get; set;} 
    public int TID { get; set;} 
    public string Detail{ get; set;} 
    public DateTime Date { get; set;} 
    public DateTime LastDate { get; set;} 

    public MyVisitorAdvertisement() 
    { 
    //constructor 
    } 

    public List<MyVisitorAdvertisement> ListByID(int ID) 
{ 
    List<MyVisitorAdvertisement> visitors = new List<MyVisitorAdvertisement>(); 
    using (var Ctx = new DomainRepository<VisitorAdvertisement>(new ProposalsEntities())) 
    { 
     foreach (var visitor in Ctx.Find<VisitorAdvertisement>(q => q.ID == ID).ToList()) 
     { 
      MyVisitorAdvertisement visitoradvertisement = new MyVisitorAdvertisement(); 
      visitoradvertisement.ID = visitor.ID; 
      // i dislike to do it. i think that how to make it a extention?  

      visitors.Add(visitoradvertisement); 
     } 
     return visitors; 
    } 
} 
} 

我想要的分机:

public static List<TResult> (this IEnumerable<T> mylist) where TResult,T: class 
{ 
    return //mylist parse to List<TResult> 
} 

回答

1

喜欢的东西:

public static List<TResult> ListByID<TResult>(this IEnumerable<T> mylist) where TResult : VisitorAdvertisement where T: class 
{ 
    return Ctx.Find<TResult>(q => q.ID == ID).SelectMany(a => new TResult{ Id = a.Id}).ToList(); 
} 

如果VisitorAdvertisement从有基础的实体继承在它的ID,那么你可以基于这一点的可靠性而是开放任何派生的东西。对不起,我不断得到语法错了,我不是在VS.Net

+0

不工作语法错误编码:我们可以添加约束到一个通用的方法是什么? – Penguen 2012-01-13 14:20:46

+0

对不起,剪切和粘贴错误;)是的,你可以 – jolySoft 2012-01-13 14:24:13

+0

错误:类型或命名空间名称Tresult'找不到(是否缺少using指令或程序集引用) – Penguen 2012-01-13 14:28:24