检查数组中是否存在具有特定属性值的项

时间:2013-10-03 04:18:21

标签: c# arrays for-loop

我有一个网站,需要从外部txt文件读取数据..我已将该文件放在App_data文件夹中,并使用此代码从该文件中读取数据

txt文件包含3个文本..其中包括:kevin123 INFO102lec INFO102k

   protected void logInButton_Click(object sender, EventArgs e)
{
    string usernameListString = File.ReadAllText(Server.MapPath("~") + "/App_Data/usernameFile.txt");

    string[] userAray = usernameListString.Split(' ');
    bool usernameExists = false;
    for (int i = 0; i < userAray.Length; i++)
    {
        if (usernameTextBox.Text == userAray[i])
        {
            welcomeLabel.Text = "Welcome" + userAray[i];
        }

        if (usernameTextBox.Text != userAray[i])
        {
            welcomeLabel.Text = "unknown user";
        }

        usernameExists = true;

    }

我想写一个for循环,遍历userArray的每个项目。在循环结束时,仅当在用户名文本框中输入的用户名出现在数组中时,才将usernameExists设置为true。 当我在文本框中键入1这个名字时,我编写了一些代码?如果这个名字不存在,它会给一个欢迎标签?反之亦然!

上面的代码有什么问题吗?

5 个答案:

答案 0 :(得分:1)

您可以使用Linq:

usernameExists = userArray.Any(x => x == usernameTextBox.Text);

此外,在您的示例中,您将userAray声明为字符串数组..但您将其用作单个字符串。

答案 1 :(得分:1)

这样可行:

bool usernameExists = false;
for (int  i = 0; i < userAray.Length; i++)
{
    if (userAray[i] == "kevin123")
    {
        usernameExists = true;
        break; // stop checking more values
    }
}

或更简单:

bool usernameExists = userAray.Contains("kevin123");

或者,如果要检查数组是否包含多个值中的任何一个:

string[] userNamesToSearchFor = new[] { "kevin123", "INFO102lec", "INFO102k" };
bool usernameExists = userAray.Intersect(userNamesToSearchFor).Any();

关于您的更新,问题是您在循环遍历数组时尝试更新标签。您需要首先确定数组中是否存在用户名(usernameExists)和然后设置指示结果的标签,例如:

for (int  i = 0; i < userAray.Length; i++)
{
    if (userAray[i] == usernameTextBox.Text)
    {
        usernameExists = true;
        break; // stop checking more values
    }
}

if (usernameExists)
{
    welcomeLabel.Text = "Welcome " + usernameTextBox.Text;
}
else 
{
    welcomeLabel.Text = "unknown user";
}

答案 2 :(得分:1)

试试这个

protected void logInButton_Click(object sender, EventArgs e)
{
string usernameListString = File.ReadAllText(Server.MapPath("~") 
      + "/App_Data/usernameFile.txt");

string[] userAray = usernameListString.Split(' ');
bool usernameExists = false;
for (int  i = 0; i < userAray.Length; i++)
{
    if (userAray[i]==usernameTextBox.Text)
    {
        welcomeLabel.Text = "Welcome" + userAray[i];
        usernameExists = true;
    }
    else
    {
        welcomeLabel.Text = "unknown user";
    }        
}

答案 3 :(得分:0)

问题是您需要==并尝试使用ReadAllLines读取文件中的所有行

string[] userAray = File.ReadAllLines();
if (userAray[i] == "kevin123" || userAray[i] == "INFO102lec" || userAray[i] == "INFO102k") 
{
   usernameExists = true;
   break; 
}

=用于分配。 ==用于比较

答案 4 :(得分:0)

尝试:

    bool usernameExists = false;
    for (int  i = 0; i < userAray.Length; i++)
    {
        if (userAray == "kevin123")
        {
          usernameExists =true;
        }
    }