我正在使用本地数据库和linq来执行项目。
它是第一个获得该模型的产品型号和数量的获胜形式。
之后,用户必须在表单中选择模型,然后开始插入序列号(等于数量)。
我的问题是我希望用户选择型号ID并获得数量编号,以便我可以将其用于带序列号的循环。
我想使用列数量作为计数器。 我将此列设计为int,但我无法使用它。
它不会通过此代码发生:
private void Serials_Load(object sender, EventArgs e)
{
comboBox1.DataSource = show.linqpros;
}
DataClassesDataContext show = new DataClassesDataContext(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\product.mdf;Integrated Security=True;Connect Timeout=30");
linqpro serial = new linqpro();
private void addSerial_Click(object sender, EventArgs e)
{
var count = 1;
string selected = comboBox1.Text;
var query = from q in show.linqpros where (selected==serial.ModelID) select serial.Quantity;
count = Convert.ToInt32(query);
for (int i = 1; i >= count; i++)
{
string best = selected;
addserial addserial = new addserial(best);
addserial.ShowDialog();
}
}
这是我的表:
这是错误:
答案 0 :(得分:0)
你自己投了查询。这不是一个数字,因为你使用的是where子句,它可能导致多行。
如果您需要出现次数
,您需要获取查询计数替换
count = Convert.ToInt32(query);
与
count = Convert.ToInt32(query.Count());
但是,更好地阅读问题,似乎您需要修改您的查询以仅返回所选行的数量:
var query = from q in show.linqpros where (selected==serial.ModelID) select serial.Quantity;
进入某个行
show.Linqpros.Single(s=>s.ModelID == selected).Quantity