如何检查C#中ListBox中是否存在数组

时间:2015-06-17 12:48:34

标签: c# asp.net arrays listbox

如何检查C#中ListBox中是否存在数组

我在数据库中填充了两个 ListBox ,我可以使用C#将数组项从一个列表框移动到asp.net中的另一个列表框

有没有办法检查数组是否存在或是否有值?

我有这行代码,但当我从第一个ListBox 填充的第二个ListBox 中没有值时,输出为:

System.Collections.ArrayList
System.Collections.ArrayList


    ArrayList arraylist2 = new ArrayList();
    ArrayList arraylist4 = new ArrayList();

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (arraylist2.ToString() != "" && arraylist4.ToString() != "")
        {
            Response.Write(arraylist2.ToString() + "<br />" + arraylist4.ToString() + "<br />");
        }
        else
        {
            Response.Write("not array values");
        }
    }

你能帮助我吗?

提前谢谢。

修改

我的代码如下:

protected void Button1_Click(object sender, EventArgs e)
{
    if (arraylist2.Count > 0 && arraylist4.Count > 0)
    {
        Response.Write(arraylist2.ToString() + "<br />" + arraylist4.ToString() + "<br />");
    }
    else
    {
        Response.Write("not array values");
    }
}

修改#1

if (arraylist2.Count > 0 && arraylist4.Count > 0)
{
    int b = arraylist2.Count;
    for (int i = 0; i < b; i++)
    {
        Response.Write(arraylist2[i] + ", " + arraylist4[i]);
    }

}
else
{
    Response.Write("not array values");
}

修改#2

arraylist2.Add(ListBox2.ToString());
arraylist4.Add(ListBox4.ToString());

b = arraylist2.Count;
c = arraylist4.Count;

if (b > 1 && c > 1)
{            
    for (i = 0; i < b; i++)
    {
        Response.Write(arraylist2[i].ToString() + ", " + arraylist4[i].ToString());
    }
}
else
{
    Response.Write("not array values");
}

修改#3

arraylist2.Add(ListBox2.Text.ToString());
arraylist4.Add(ListBox4.Text.ToString());

b = arraylist2.Count;
c = arraylist4.Count;

if (b > 0 && c > 0)
{        
    for (i = 0; i < b; i++)
    {
        Response.Write(arraylist2[i].ToString() + ", " + arraylist4[i].ToString());
    }
}

3 个答案:

答案 0 :(得分:1)

转换arraylist2.ToString()没有多大意义。如果要将列表转换为字符串,可以执行以下操作:

ArrayList arrayList = new ArrayList() { 1, 2, 3 };
StringBuilder sb = new StringBuilder();

foreach (object o in arrayList) 
{ 
  sb.Append(o);
}
string s = sb.ToString();

答案 1 :(得分:0)

我不确定我是否完全理解这里的问题,因此请关注您的评论“有没有办法检查数组是否存在或有值?”您可以使用ArrayList.Count属性来确定数组列表是否实际包含任何内容。所以:

if(arraylist2.Count > 0 && arraylist4.Count > 0)
{
    //your code
}

如果要显示数组列表中的每个项目,可以像这样循环遍历它们:

for(int i = 0; i < arraylist2.Count; i++)
{   
    Response.Write(arraylist2[i].ToString() + ", " + arraylist4[i].ToString()) //or whatever you want to write.
}

这假设每个arraylist中的项目数相同。如果没有,则获取两个列表的计数,并简单地遍历第二个列表。

<强> 修改

根据我的评论,您可能最好将您的arraylists更改为List。所以你可以这样:

List<string> list2 = new List<string>();
list2.Add(//your values);

这将允许您像arraylist一样使用count属性,但是您应该能够通过使用它的索引(不需要ToString())来显示每个项目。

编辑2

好的,看过你的编辑#2和编辑#3,你仍然没有正确地将列表框中的项目添加到arraylists。你需要像这样添加它们:

for (int j = 0; j < ListBox2.Items.Count; j++)
{
    if (!arraylist2.Contains(ListBox2.Items[j]))
    {
        arraylist2.Add(ListBox2.Items[j]);
    }
}

答案 2 :(得分:0)

确保列表arraylist2arraylist4都包含在内。当您在&&中使用if时,两个条件都必须返回true

下面的代码对我有用 -

  ArrayList arraylist2 = new ArrayList();
    ArrayList arraylist4 = new ArrayList();

    private void button1_Click(object sender, EventArgs e)
    {
        arraylist2.Add("SomeVal");
        arraylist4.Add("SomeVal");
        if (arraylist2.Count > 0 && arraylist4.Count > 0)
        {
            MessageBox.Show(arraylist2.ToString() + "<br />" + arraylist4.ToString() + "<br />");
        }
        else
        {
            MessageBox.Show("not array values");
        }   
    }

使用

arraylist2.AddRange(ListBox2.Items);
arraylist4.AddRange(ListBox4.Items);

而不是

arraylist2.Add(ListBox2.Text.ToString());
arraylist4.Add(ListBox4.Text.ToString());