2011-07-18 99 views
0

如何將字符串數組映射到對象列表?一個for循環會做到這一點,但想知道是否有更優雅的方式來做到這一點?也許與Linq?LINQ - 將字符串數組映射到對象列表

字符串數組:

string[] names = { "john","jane"};         
string[] companies = { "company ABC", "" }; 
string[] affiliations = { "affiliation 1", "affiliation 2" }; 

聯繫人:

public class Contact 
{ 
    public string Name { get; set; } 
    public string Company { get; set; } 
    public string Affiliation { get; set; } 
    public string Address { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
} 
+1

我不明白你的問題 - 你想達到什麼目的? –

+0

一個可靠的循環和一個int索引將做到這一點:) –

+0

試圖找到比使用for循環更優雅的解決方案。也許通過使用linq? – dm80

回答

4

假設你確保所有的陣列(全部的,不只是你的問題中的前三個)是完全相同相同的大小和正確的順序(因此所有的值將對應於正確的Contact對象),for循環就足夠了...

var contactList = new List<Contact>(); 

for (int i = 0; i < names.Length; i++) 
{ 
    contactList.Add(new Contact 
    { 
     Name = names[i], 
     Company = companies[i], 
     Affiliation = affiliations[i], 
     // etc 
    }); 
} 
+0

你打敗了我。刪除我的答案,因爲我更喜歡你的答案。 – Zach

+1

你想'names.Length'。 – gilly3

+0

@ gilly3:哎呀。非常感謝。 – BoltClock

1

如果您確實在代碼中包含這兩個定義,那麼您應該完全跳過字符串數組步驟。相反,初始化的Contact直接列表:

var contacts = new List<Contact>() 
{ 
    new Contact() 
    { 
     Name = "john", 
     Company = "company ABC", 
     Affiliation = "affiliation 1", 
    }, 
    new Contact() 
    { 
     // ... 
    }, 
    // ... 
}; 

這是更具可讀性,並且不太容易出錯,如果你有不匹配列表的大小,或者說沒有一些數據中的一個條目。

相關問題