Ваша догадка была почти правильной. То, что вы хотите использовать nestedList[0][0]
:
List<List<string>> nestedList = new List<List<string>>();
nestedList.Add(new List<string> { "test1" });
nestedList.Add(new List<string> { "test2" });
nestedList.Add(new List<string> { "test3" });
if (nestedList[0][0] == "test1")
{
Console.WriteLine("Test 1!");
}
Если это поможет вам понять синтаксис, вот эквивалентный фрагмент кода:
List<List<string>> nestedList = new List<List<string>>();
nestedList.Add(new List<string> { "test1" });
nestedList.Add(new List<string> { "test2" });
nestedList.Add(new List<string> { "test3" });
List<string> firstList = nestedList[0]; // Here's your new List<string> { "test1" }
if (firstList[0] == "test1")
{
Console.WriteLine("Test 1!");
}
Однако вы хотите быть осторожным при доступе к суб- списки, например, если вы не совсем уверены, что все списки были заполнены. Например, в следующем примере будет приветствовать вас с ArgumentOutOfRangeException
, потому что нет никаких элементов внутри List<string>
возвращаемых nestedList[0]
:
List<List<string>> nestedList = new List<List<string>>();
nestedList.Add(new List<string>());
nestedList.Add(new List<string>());
nestedList.Add(new List<string>());
if (nestedList[0][0] == "test1") // Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: index
{
Console.WriteLine("Test 1!");
}
Вы можете убедиться, что, например, первой проверка элемента родительского списка подсчитывать:
if (nestedList[0].Count> 0 && nestedList[0][0] == "test1")
{
Console.WriteLine("Test 1!");
}
Если вы хотите безопасный способ получить доступ к первому элементу либо реализующего интерфейс IEnumerable<T>
(в основном каждый класс коллекции в рамках), вы можете использовать LINQ (добавить using System.Linq;
) FirstOrDefault
метод:
if (nestedList[0].FirstOrDefault() == "test1")
{
Console.WriteLine("Test 1!");
}
Когда элементы Enumerable являются class
ES, метод возвращает либо первый элемент из перечислимы или null
.
Подсказка: 'Список firstNestedList = nestedList [0];' - Что вы делаете для доступа к первому элементу списка? –
cubrr
вы не должны получить доступ, как 'nestedList [0 [0]]'. вы должны сделать так: 'nestedList [0] [0]' –