【问题标题】:Check if a list contains text at a particular line C#检查列表是否在特定行 C# 包含文本
【发布时间】:2026-01-05 03:55:02
【问题描述】:

下面是我的代码,将第一行的 5 个文本框添加到另一个列表 (averageLetter1)

我想创建一个 IF 语句来检查列表是否在特定行包含文本,如果是则返回 true。

//average for letter 1 of each password
                averageLetter1.Add(pw.ElementAt(0));
                averageLetter1.Add(pw1.ElementAt(0));
                averageLetter1.Add(pw2.ElementAt(0));
                averageLetter1.Add(pw3.ElementAt(0));
                averageLetter1.Add(pw4.ElementAt(0));


                long AverageL1 = (averageLetter1.Sum()) / 5;
                MessageBox.Show(AverageL1.ToString());

我尝试过使用 Contains 方法,但无法指定具体的行。

(而且我对 C# 还很陌生,所以我还在学习。)

任何帮助将不胜感激:)

【问题讨论】:

  • 你想达到什么目的?还请包括您要解决的问题,您的问题看起来像XY Problem。换句话说,包括一个示例,可以在文本框中包含什么以及预期的结果是什么。
  • 嗯...我有 5 个文本框 (pw - pw4),我希望提取每个文本框的第一行并取所有这些文本框的平均值,这些文本框已添加到列表“averageLetter1”中" 基本上我需要一个 If 语句,以便如果存在一行,则对每个文本框执行此操作,如果不返回 false??
  • “平均线”是什么意思?平均长度?字符的ASCII值的平均值?它总是整数,你需要它的平均值吗?
  • 你看过TextBox的Lines属性了吗?这对你来说应该很方便!
  • 是的,这条线很长,它是以毫秒为单位的秒表值

标签: c# list if-statement contains


【解决方案1】:

如果您想查看averageLetter1 中的某个条目是否包含一些文本,那么您可以使用averageLetter1[lineNumber].Contains(text)。如果您想查看其中一个条目是否等于某些文本,则可以使用averageLetter[lineNumber] == text。如果您想找出任何行是否等于某些文本并知道索引,那么您可以使用:

        var matches = averageLetter1.Where(x => x == text).Select((x, index) => index).ToList();

        if (matches.Count == 0)
            MessageBox.Show("No matches");
        else
        {
            // There may be more than one match, so iterate over the matches
            foreach (var matchIndex in matches)
            {
                MessageBox.Show("text matched at " + matchIndex);
            }
        }

【讨论】:

  • 在 C# 或 .NET Framework 中没有 MsgBox 这样的东西。您可能指的是 MsgBox 的经典 VB(在使用 .NET 框架时也强烈建议不要这样做)。你的意思是... MessageBox.Show(...)
  • 你说的很对。我把它改成了 MessageBox。