LINQ - сопоставить строковые массивы со списком объектов - PullRequest
0 голосов
/ 19 июля 2011

Как мне сопоставить строковые массивы со списком объектов? Цикл for сделает это, но интересно, есть ли более элегантный способ сделать это? Возможно с 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; }
}

Ответы [ 2 ]

4 голосов
/ 19 июля 2011

Предполагая, что вы убедились, что все массивы ( все они , а не только первые три в вашем вопросе) имеют точно одинаковый размер и в правильном порядке (поэтому все значения будут соответствовать правильные 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
    });
}
1 голос
/ 19 июля 2011

Если у вас действительно есть оба этих определения в вашем коде, то вам следует просто полностью пропустить шаг массива строк. Вместо этого инициализируйте список Contact напрямую:

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

Это более читабельно и менее подвержено ошибкам, если у вас есть несоответствующие размеры списка или у вас нет данных для одной из записей.

...