使用 LINQ 查询填充组合框(不同)

filling combo box using LINQ query (distinct)

我有一个 combocox,名称是 "cmbModel" 我想用 table 中的两个不同值填充数据库。 这就是我所做的:

private void Form1_Load(object sender, EventArgs e)
        {
            using (LINQSQLDataContext db = new LINQSQLDataContext())
            {
                cmbModel.DisplayMember = "szModel";
                cmbModel.DataSource = db.VehEcus.ToList<VehEcu>();
            }
        }

这将用我的 table 的 szModel 列填充我的 cmbModel 但我想避免重复,如何在查询中使用“distinct”来实现我的目标? 我还想在我的组合框

中显示我的 table 中的 2 个项目,例如“modelID-szModel

谢谢

如果您只想显示一个列,您可以 select 该列并使用 Distinct:

cmbModel.DataSource = db.InfoProg_VehEcus.Select(x => x.szModel).Distinct();

您可以在查询后的任何时候应用 Distinct()。我建议你在枚举之前先做。

要创建自定义 modelID-szModel 字段,您可以使用 AsEnumerable() 枚举查询,然后创建匿名类型并使用 String.Format 将您的值连接到新字段中。

        using (LINQSQLDataContext c = new LINQSQLDataContext ())
        {
            var items = c.VehEcus.Select(t => new
            {
                a = t.szModel,
                b = t.modelID
            }).Distinct()
            .AsEnumerable().Select(t => new
            {
                displayMember = String.Format("{0}-{1}", t.a, t.b)
            });

            cmbModel.DisplayMember = "displayMember";
            cmbModel.DataSource = items.ToList();
        }