2016-03-21 70 views
0

我有代碼,其中我有兩個類稱爲ClassA和ClassB,並且我在兩個類中都有兩個類和數量的Fileds類, 我創建了一個名爲listA的兩個List, listB, 我需要查詢它,只有Status屬性必須使用linq/lambda表達式從listB轉移到listA。 我該怎麼做?提前 感謝, 這裏是我的代碼片段我們如何將數據從一個列表傳輸到另一個列表

class ClassA 
{ 
    public int Number { get; set; } 
    public bool Status { get; set; } 
} 

class ClassB 
{ 
    public int Number { get; set; } 
    public bool Status { get; set; } 
} 


static void Main(string[] args) 
{ 
    List<ClassA> listA = new List<ClassA>(); 
    List<ClassB> listB = new List<ClassB>(); 
    ClassA a = new ClassA(); 
    a.Number = 1; a.Status = false; 
    ClassA a2 = new ClassA(); 
    a2.Number = 1; a2.Status = true; 
    ClassA a3 = new ClassA(); 
    a3.Number = 1; a3.Status = true; 
    ClassA a4 = new ClassA(); 
    a4.Number = 1; a4.Status = true; 

    ClassB b1 = new ClassB(); 
    b1.Number = 2;b1.Status = true; 
    ClassB b2 = new ClassB(); 
    b2.Number = 3; b2.Status = false; 
    ClassB b3 = new ClassB(); 
    b3.Number = 2; b3.Status = true; 
    ClassB b4 = new ClassB(); 
    b4.Number = 3; b4.Status = false; 
    listA.Add(a); 
    listA.Add(a2); 
    listA.Add(a3); 
    listA.Add(a4); 
    listB.Add(b1); 
    listB.Add(b2); 
    listB.Add(b3); 
    listB.Add(b4); 

} 

回答

2

我會用Automapper兩個班,一個電話一起映射。這種情況就是它的設計目的。你需要做的就是創建一個映射配置,然後映射這兩個類。這是一個非常簡單但功能強大的工具。例如事情是這樣的:

var config = new MapperConfiguration(cfg => cfg.CreateMap<ClassA, ClassB>() 
); 

var mapper = config.CreateMapper(); 

List<ClassA> listA = new List<ClassA>(); 
var listClassB = mapper.Map<List<ClassB>>(listA); 
+0

好斑點。固定。 –

0

如果使用Linq,這是很容易:

var classb = from a in listA select new ClassB() { Status = a.Status }; 

這將返回一個IEnumerable<ClassB>,但你可以使用ToList,讓您的集合作爲一個List

0

試試這個下面的代碼:

static void Main(string[] args) 
     { 

      List<ClassA> listA = new List<ClassA>(); 
      List<ClassB> listB = new List<ClassB>(); 
      ClassA a = new ClassA(); 
      a.Number = 1; a.Status = false; 
      ClassA a2 = new ClassA(); 
      a2.Number = 1; a2.Status = true; 
      ClassA a3 = new ClassA(); 
      a3.Number = 1; a3.Status = true; 
      ClassA a4 = new ClassA(); 
      a4.Number = 1; a4.Status = true; 

      ClassB b1 = new ClassB(); 
      b1.Number = 2;b1.Status = true; 
      ClassB b2 = new ClassB(); 
      b2.Number = 3; b2.Status = false; 
      ClassB b3 = new ClassB(); 
      b3.Number = 2; b3.Status = true; 
      ClassB b4 = new ClassB(); 
      b4.Number = 3; b4.Status = false; 
      listA.Add(a); 
      listA.Add(a2); 
      listA.Add(a3); 
      listA.Add(a4); 
      listB.Add(b1); 
      listB.Add(b2); 
      listB.Add(b3); 
      listB.Add(b4); 
      listA.AddRange(listB.Select(o => new ClassA() { Status = o.Status })); 
     } 
相關問題