You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Winform 循环查询拆分后产品ID绑定DataGridView仅显示最后一条求助

问题原因

每次遍历产品ID时,你都会将dgvProduct.DataSource重新赋值为当前单次查询返回的单条产品结果,前一次的绑定数据会被直接覆盖,因此最终只能展示最后一次查询到的产品信息。

修复方案

推荐优先使用单次批量查询的写法,仅需访问一次数据库,性能更高:

// 拆分产品ID并转换为int类型列表,Trim处理避免ID前后带空格导致转换失败
List<int> productIdList = products.Split(',')
                                  .Select(idStr => Convert.ToInt32(idStr.Trim()))
                                  .ToList();

// 一次性查询所有匹配ID的产品名称
var productList = (from u in db.Product
                   where productIdList.Contains(u.ProductId)
                   select new
                   {
                       Productname = u.ProductNamn
                   }).ToList();

// 所有数据查询完成后一次性绑定到DataGridView
dgvProduct.DataSource = productList;

如果你的业务逻辑必须逐ID查询处理,可以使用列表先累积所有查询结果,最后再统一绑定:

string[] productArr = products.Split(',');
// 定义列表存储所有查询到的产品信息
var allProductList = new List<object>();

foreach (var item in productArr)
{
    int pid = Convert.ToInt32(item.Trim());
    var product = (from u in db.Product
                   where u.ProductId == pid
                   select new
                   {
                       Productname = u.ProductNamn
                   }).FirstOrDefault();
    // 排除不存在的ID对应的空结果
    if (product != null)
    {
        allProductList.Add(product);
    }
}

// 统一绑定数据源
dgvProduct.DataSource = allProductList;

内容的提问来源于stack exchange,提问作者Helen Tekie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:51:00