迭代对象列表以检查值

时间:2016-04-08 16:03:46

标签: c# list

我在这里发现了很多类似的问题,但没有一个答案对我有帮助。我是C#的新手,我觉得我做的事情根本就是错误的。 无论如何,我在SQL数据库中有一个BIT列。我试图提取这些数据并检查它们是否为真,以及是否将对象的名称输出到Windows窗体中的列表框中。我希望我解释得那么好......这是代码。

首先,我创建了一个我正在使用的所有项目的类

public class lb1items
{
    public string item1 { get; set; }
    public string item2 { get; set; }
    public string item3 { get; set; }
    public string item4 { get; set; }
    public string item5 { get; set; }
    public string item6 { get; set; }
    public string item7 { get; set; }
    public string item8 { get; set; }
    public string item9 { get; set; }
}

然后我查询数据库并将项目放入DataTable然后从数据表拉入列表

List<lb1items> varslist = new List<lb1items>();
varslist.Add(new lb1items()
{
    item1 = (dt.Rows[rowIndex]["Item1"].ToString()),
    item2 = (dt.Rows[rowIndex]["Item2"].ToString()),
    item3 = (dt.Rows[rowIndex]["Item3"].ToString()),
    item4 = (dt.Rows[rowIndex]["Item4"].ToString()),
    item5 = (dt.Rows[rowIndex]["Item5"].ToString()),
    item6 = (dt.Rows[rowIndex]["Item6"].ToString()),
    item7 = (dt.Rows[rowIndex]["Item7"].ToString()),
    item8 = (dt.Rows[rowIndex]["Item8"].ToString()),
    item9 = (dt.Rows[rowIndex]["Item9"].ToString())
});

到此为止我调试时一切正常我可以打开varslist并查看所有具有真假值的项目,这里是我遇到问题的地方。

我针对for进行varslist.count()循环,但是当我首次亮相时,它只给我一个值而不是8?并且它似乎没有检查项目的值对if语句,并且绝对不会向复选框添加任何内容,这里是代码

for(int i = 0; i < varslist.Count(); i++)
{
    if (varslist[i].ToString() == "True")
    {
        listBox1.Items.Add(varslist[i]);
    }
}

我在这里缺少什么?谢谢你的期待!

编辑:我想要完成的是将数据库中的列名称值== true添加到列表框中。

Edit2:无法按照我想要的方式弄清楚,所以我创建了一个检查的方法,将列名称作为字符串,然后如果该列为true,则将其添加到列表框中

    public void addtoListBox(string fName)
    {
        if (dt.Rows[rowIndex][fName].ToString() == "True")
        {
            listBox1.Items.Add(fName);
        }

    addtoListBox("Item1"..."Item9");

1 个答案:

答案 0 :(得分:1)

你的问题就像S.Akbari所说,你使用的是具有不同属性的对象而不是可枚举的值集合。

您的代码应该看起来更像这样,以便能够迭代列/值的集合。

List<string> varslist = new List<string>();

var rowIndex = 0;
foreach (var col in dt.Columns)
{
    varslist.Add(dt.Rows[rowIndex][col.ToString()].ToString());
}

foreach(var value in varslist)
{
    if (value == "True")
    {
        listBox1.Items.Add(value);
    }
}