Ответ 1
Использование:
if (lsRelation.Count >= 2)
secLast = lsRelation[lsRelation.Count - 2];
У меня есть List<string>
как:
List<String> lsRelation = new List<String>{"99","86","111","105"}.
Теперь я хочу найти номер 111, который является второй до последней строки.
Итак, я пробовал:
String strSecondLast=lsrelation.Last() - 2;
который не работает. Итак, как я могу найти второй для последнего элемента списка с помощью Last()
.
Использование:
if (lsRelation.Count >= 2)
secLast = lsRelation[lsRelation.Count - 2];
Если вы знаете, что IList<T>
с индексом:
string secondLast = null;
if (lsRelation.Count >= 2)
secondLast = lsRelation[lsRelation.Count - 2];
Вы можете создать расширение, например:
public static T SecondLast<T>(this IEnumerable<T> items)
{
if (items == null) throw new ArgumentNullException("items");
IList<T> list = items as IList<T>;
if (list != null)
{
int count = list.Count;
if (count > 1)
{
return list[count - 2];
}
else
throw new ArgumentException("Sequence must contain at least two elements.", "items");
}
else
{
try
{
return items.Reverse().Skip(1).First();
} catch (InvalidOperationException)
{
throw new ArgumentException("Sequence must contain at least two elements.", "items");
}
}
}
Затем вы можете использовать его следующим образом:
string secondLast = lsRelation.SecondLast();
Есть много вариантов для этого. Просто упомянуть, что я еще не видел здесь:
List<string> lsRelation = new List<String>{"99","86","111","105"};
String strSecondLast = lsRelation.Skip(lsRelation.Count() - 2).First();
Вы можете использовать ElementAt(list.Count - 2)
:
List<String> lsRelation = new List<String> { "99", "86", "111", "105" };
Console.WriteLine(lsRelation.ElementAt(lsRelation.Count - 2)); // 111
Вы не можете сделать это, используя Last()
. Попробуй это. Вы берете длину списка и вычитаете 2:
if (lsRelation.Count >= 2)
{
var item = lsRelation[lsRelation.Count - 2];
}
Edit:
На основе комментария здесь приведен пример использования метода Last()
, который будет нелепо использовать:
if (lsRelation.Count >= 2)
{
var item = lsRelation.Last(x => x == lsRelation[lsRelation.Count - 2]);
}