我在这里发现了很多类似的问题,但没有一个答案对我有帮助。我是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");
答案 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);
}
}