преобразовать разделенную запятыми строку в список, используя linq - PullRequest
7 голосов
/ 26 ноября 2009

У меня есть 3 строки, разделенные запятыми FirstName, MiddleInitial, LastName

У меня есть класс NameDetails:

public class NameDetails
{
    public string FirstName { get; set; }
    public string MiddleInitial { get; set; }
    public string LastName { get; set; }
}

У меня есть значения для строк:

FirstName ="John1, John2, John3"
MiddleInitial = "K1, K2, K3"
LastName = "Kenndey1, Kenndey2, Kenndey3"

Мне нужно заполнить список NameDetails значениями из строк через запятую.

Есть что-нибудь для этого? Мне это нужно для моего приложения asp.net mvc (C #).

Ответы [ 3 ]

11 голосов
/ 26 ноября 2009

Я не считаю это хорошим решением, но оно делает то, что вы просили, а именно: «Делайте это в LINQ».

Это также, вероятно, не самое эффективное решение.

string FirstName ="John1, John2, John3";
string MiddleInitial = "K1, K2, K3";
string LastName = "Kenndey1, Kenndey2, Kenndey3";
List<String> fn = new List<String>(FirstName.Split(','));
List<String> mi = new List<String>(MiddleInitial.Split(','));
List<String> ln = new List<String>(LastName.Split(','));

IEnumerable<NameDetails> result = from f in fn
        join i in mi on fn.IndexOf(f) equals mi.IndexOf(i)
        join l in ln on fn.IndexOf(f) equals ln.IndexOf(l)
        select new NameDetails {f, i, l};

Я использовал LINQPad , чтобы сначала попробовать это (с анонимным классом, а не с именем NameDetails).

1 голос
/ 26 ноября 2009

В дополнение к моему предыдущему ответу вы также можете попробовать:

// some setup
string firstName ="John1, John2, John3";
string middleInitial = "K1, K2, K3";
string lastName = "Kenndey1, Kenndey2, Kenndey3";
var fn = firstName.Split(',');
var mi = middleInitial.Split(',');
var ln = lastName.Split(',');

// the important bit
var s = fn.Select((f, index) => new NameDetails {f, i = mi[index], l = ln[index]});

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

Кредит из-за предыдущего ответа на SO .

1 голос
/ 26 ноября 2009

Вы можете использовать библиотеку Linq to CSV .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...