访问List<List<string>>的元素

7
有人能告诉我如何访问已添加到列表中的列表的元素。我会提供代码。
List<string> str = new List<string>();
List<List<string>> stud = new List<List<string>>();

已定义一种方法,该方法将数据插入到str中,并在方法执行结束后完成操作。
stud.Add(str);

方法和stud.Add(str)是在按钮单击时执行的......因此,每次str包含不同的数据.......

问题是我想搜索整个stud,即所有创建的str,是否str[0]==textBox3.Text;

我对For循环感到困惑...如何到达stud中的所有str[0]以验证条件。


请编辑您的问题,将代码放在反引号中或单独的段落中,缩进4个空格。它应该看起来像 这样。似乎将代码放在常规文本中已经损坏了它。 - Ryan C. Thompson
3
我代表他格式化了代码——在声望值为1的情况下,他自己无法做太多事情。 - Bevan
下面是有关编程的内容,请将其从英语翻译成中文。只返回翻译后的文本: - Anthony Pegram
4个回答

6
您可以使用

标签


if (str.Any(stud.Any(s => s == textBox3.Text)))
{
    // Do something...
}

@shiv09: bool func(string s){ return s == textBox3.Text} 使用lambda表达式可以转换为s => s== textBox3.Text。请参考http://msdn.microsoft.com/en-us/library/bb397687.aspx。 - Pratik Deoghare
@shiv09 这是一个 lambda 语句,s 只是您列表中的每个元素的占位符,因为它应用于 => 运算符右侧的函数。但它确实需要 .NET 3 或更高版本。 - johnc
在许多答案中,我看到人们提供与.NET 3+相关的答案。我想知道何时有人会问这个问题实际上关联的是哪个版本的.NET!例如,我的问题仍然停留在.NET 2上,但我却得到了3.5的解决方案:-s - Nayan
可能会随着.NET 4变得更糟。 - Asher

3
foreach(List<string> innerList in stud)
{
    foreach(string str in innerLst)
    {
        if(!String.IsEmptyOrNull(str) && str.Equals(textBox3.Text))
        {
            ...
        }
    }
}

3
如果 strnullstr.Equals(...) 可能会出现问题。 - Marc Gravell
1
+1是明确指定foreach(List<string>foreach(string)。当涉及嵌套或复杂的数据结构时,明确命名类型可以帮助您准确地了解正在处理的内容时,如果出现混淆情况,它会非常有帮助。 - Kirk Broadhurst
我确实喜欢 var,但只有在从赋值者的名称推断出类型或者上下文极为明显时才使用它。实际上,我可能会使用 var,特别是因为我不会把变量命名为“stud”。它看起来应该是类似 foreach(var addresses in allStaffEmailAddresses) 和 foreach(var address in addresses)。然而,在教学案例中,我认为展示确切的类型会更有帮助。 - Michael Shimmins

2
var stud =  new List<List<string>>();
foreach( var list in stud )
{
    foreach( item in list )
    {
        if ( item == textBox3.Text )
            //...
    }
}

如果您只想搜索第一个列表中的第一项,则可以执行以下操作:

if ( stud.Count > 0 )
{
    var list = stud[0]
    if ( list.Count > 0 && list[0] == textbox3.Text )
        //...
}

非常感谢你,Thomas!我不得不稍微修改一下,但它确实按照我的期望工作了。谢谢,伙计!!太棒了......... - Shiv

0

SelectMany 方法可以将列表元素展开:

// untested
var all = stud.SelectMany(...)
              .Where(...)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接