2014-04-13 226 views
-1

下面是代码我有,要的5个文本框的第一行添加到另一个列表(averageLetter1)检查列表包含文本,在一个特定的行C#

我想创造一个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()); 

我已经使用包含方法试过,但不能指定特定的线。

(另外我是相当新的C#,所以我还在学习。)

任何帮助,将不胜感激:)

+0

你想达到什么目的?请包括您正在尝试解决的问题,您的问题看起来像[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。换句话说,包括一个例子可以在文本框中,以及预期的结果是什么。 –

+0

那么...我有5个文本框(pw - pw4),我希望提取每个的第一行,并采取所有这些,已被添加到列表中的平均值“averageLetter1” 基本上我需要一个如果语句,以便如果一行存在对每个文本框执行此操作,如果不返回错误? – PShickle

+0

“平均线”是什么意思?平均长度?字符的ASCII值的平均值?它总是整数,你需要它的平均值? –

回答

0

如果你想看看在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); 
      } 
     } 
+0

在C#或.NET Framework中没有MsgBox这样的事情。你可能指的是MsgBox的经典VB(当使用.NET框架时也非常不鼓励)。你的意思是... MessageBox.Show(...) –

+0

你是非常正确的。我将其更改为MessageBox。 – KevinS

相关问题