Наиболее лаконичным способом для преобразования списка.элементы в общий список
Я использую C# и нацелен на .NET Framework 3.5. Я ищу небольшой, лаконичный и эффективный кусок кода, чтобы скопировать все элементы в ListBox до List<String>
(Generic список).
На данный момент у меня что-то похожее на приведенный ниже код:
List<String> myOtherList = new List<String>();
// Populate our colCriteria with the selected columns.
foreach (String strCol in lbMyListBox.Items)
{
myOtherList.Add(strCol);
}
, который работает, конечно, но я не могу помочь, но чувствую, что там должен быть лучший способ сделать это с некоторыми из новых возможностей языка. Я думал что-то вроде список.ConvertAll метод, но это относится только к общим спискам, а не списка.ObjectCollection коллекций.
5 ответов:
немного LINQ должно сделать это: -
var myOtherList = lbMyListBox.Items.Cast<String>().ToList();
конечно, вы можете изменить параметр типа приведения к любому типу, который вы сохранили в свойстве Items.
следующее сделает это (используя Linq):
List<string> list = lbMyListBox.Items.OfType<string>().ToList();
на OfType вызов гарантирует, что используются только элементы в элементах списка, которые являются строками.
С помощью Cast, если какой-либо из элементов не являются строками, вы получите исключение.
Как насчет этого:
List<string> myOtherList = (from l in lbMyListBox.Items.Cast<ListItem>() select l.Value).ToList();