2012-11-03 44 views
2
class A 
{ 
    public string[] X {get;set;} 
    public string[] Y {get;set;} 
} 

class B 
{ 
    public string X {get;set;} 
    public string Y {get;set;} 
} 

用Linq將A對象的數據傳輸到B的陣列? A的假設對象有10-10尺寸X和Y,我想轉移到B排列(B[] b = new B[10])關於通過LINQ將數據傳輸到一個陣列的對象

A a = new A(); 
//put 10 items in both x and y 
B[] b = new B[10]; 
//here I want to get a's data to b 
+1

直接使用循環有什麼可怕的地方? – Oded

+0

你的問題存在一個問題,用於編寫查詢什麼保證'A'中的'X'和'Y'具有相同的長度? – Vamsi

+0

'A'中的每個'string []'應該如何傳遞到'B'中的'string'? – Oded

回答

5

您可以使用Zip方法從LINQ:

A a = new A(); 
B[] bs = a.X.Zip(a.Y, (x, y) => new B() { X = x, Y = y }) 
      .ToArray(); 

或者使用Select搭配指數:

B[] bs = a.X.Select((x, i) => new B {X = x, Y = a.Y[i]}) 
      .ToArray(); 

使用Enumerable.Range如果您遇到在.NET 3.5的另一種方式:

B[] bs = Enumerable.Range(0, 10) 
        .Select(i => new B {X = a.X[i], Y = a.Y[i]}) 
        .ToArray(); 
+0

謝謝...拉鍊工作爲我使用4.0 –

相關問題