c#动态LINQ查询

本文关键字:查询 LINQ 动态 | 更新日期: 2023-09-27 18:27:40

在我的winform应用程序中,我在datagridview中添加combobox列,并使用以下代码选择combobox项:

var entityModel= new AdminEntities();
DataGridViewComboBoxColumn cboIsNew = new DataGridViewComboBoxColumn();
var isNew = (from a in entityModel.TOWERs select a.ISNEW).Distinct().OrderBy(x => x);
cboIsNew.Items.AddRange(isNew.ToArray());
int i = dgvLoadTable.Columns["ISNEW"].Index;
dgvLoadTable.Columns.Insert(i, dgvCol);
dgvLoadTable.Columns[i].HeaderText = dgvLoadTable.Columns[i + 1].HeaderText;
dgvLoadTable.Columns[i + 1].Visible = false;

有没有一种方法可以通过一个简单的函数来实现这一点,在这个函数中我只传递表名和列名/索引?此外,如果我这样做:

dgvLoadTable.Columns.Insert(i, new DataGridViewComboBoxColumn());

那么我该如何将项目添加到这个动态创建的组合框中呢?我试着添加如下项目,但不起作用:

 cboIsNew.Items.AddRange((from a in entityModel.TOWERs select a.ISNEW).Distinct().OrderBy(x => x))

任何帮助都将不胜感激。

c#动态LINQ查询

试试这个:

cboIsNew.Items.AddRange((from a in entityModel.TOWERs select a.ISNEW)
  .Distinct().Select( x => new DataGridViewComboBoxColumn() ).ToList());

您需要使用x作为源来查看具有特定值的DataGridViewComboBoxColumn,但我的布局方式应该创建一个可以添加的对象列表。