Linq: как получить второй последний

Итак, у меня есть список строк, который выглядит следующим образом:

var ls=new List<string>()
    {
        "100",
        "101-102-1002",
        "105-153-1532-1532",
        "105-1854-45-198",
        "180-95-45-200"
    };

Я хочу получить вторую последнюю из разделенных строк. Поэтому мой вывод выглядит так:

null,
102,
1532,
45,
45

У меня есть решение для этого, которое выглядит так:

ls.Select (l =>l.Split('-').Select ((s,i) =>new {s,i})
.OrderByDescending (x=>x.i).Skip(1).Take(1))

Я думаю, что это решение может быть слишком сложным для этой простой задачи. Поэтому мой вопрос заключается в следующем: Есть ли у кого-нибудь из вас более простое решение этой проблемы?

27
задан Arion 4 January 2012 в 09:08
поделиться