2017-02-10 101 views
-3

,並具有相同的屬性最簡單的可能性。對不起,現在我沒有例子,因爲我在智能手機上。我想是這樣與EF和LINQ的選擇並通過映射設置屬性創建一個新的對象。但最終我還會返回一個新的IEnumerable。C#什麼是映射/轉換IEnumerable的<Told>到另一個IEnumerable的<Tnew>尤其是EF

+2

Stack Overflow是不是免費的代碼編寫服務。您應該嘗試自己編寫代碼。做更多的研究之後,如果你有問題,你可以上傳你與什麼不工作,並提供一個最小的,完整的和可驗證的例子解釋清楚試了一下。 – MarceloBarbosa

+0

你是對的!但坐着火車與空的筆記本電腦我只是從我的智能手機postet一個簡單的問題,沒想到代碼解決方案片段或什麼的。儘管如此,給出的答案幫助我解決了我的問題。 – snoopdizzle

+0

沒問題。很高興你知道。回頭見。 – MarceloBarbosa

回答

1

使用可以使用.ConverAll方法:

using System.Linq; // Need; 

    internal class Program 
    { 
    private static void Main() 
    { 
     IEnumerable<TOld> told = new List<TOld> { new TOld { Name = "Name1", Age = 18 } }; 
     IEnumerable<TNew> tnew = told.ToList().ConvertAll(t => new TNew { Name = t.Name, Age = t.Age }); 

     foreach (var @new in tnew) 
     Console.WriteLine(@new.Name); 
    } 
    } 

    public class TOld 
    { 
    public string Name { get; set; } 
    public int Age { get; set; } 
    } 

    public class TNew 
    { 
    public string Name { get; set; } 
    public int Age { get; set; } 
    } 
1

使用AutoMapper。以下是2類:

public class TOld { 
    public string Prop1 { get; set; } 
} 

public class TNew { 
    public string Prop1 { get; set; } 
} 

這是告訴AutoMapper如何映射它們的代碼。使用下面的代碼,你可以從映射到IEnumerable<TOld>IEnumerable<TNew>反之亦然:

// ReverseMap will do vice-versa mapping 
Mapper.Initialize(x => x.CreateMap<TOld, TNew>().ReverseMap()); 

IEnumerable<TOld> olds = new List<TOld> { new TOld { Prop1 = "TOld" } }; 

var news = Mapper.Map<IEnumerable<TNew>>(olds); 
相關問題