C# 如何使用LINQ将单元格值从DataGridView传递到ListBox
我想将彩色单元格值传递到C# 如何使用LINQ将单元格值从DataGridView传递到ListBox,c#,linq,datagridview,listbox,C#,Linq,Datagridview,Listbox,我想将彩色单元格值传递到列表框。但不幸的是,我无法通过使用以下代码来实现这一点 我做错了什么 var cellColorValue = dataGridView1.Rows.Cast<DataGridViewRow>() .SelectMany(row => row.Cells.Cast<DataGridViewCell>() .Where(c => c.Style.BackCol
列表框
。但不幸的是,我无法通过使用以下代码来实现这一点
我做错了什么
var cellColorValue = dataGridView1.Rows.Cast<DataGridViewRow>()
.SelectMany(row => row.Cells.Cast<DataGridViewCell>()
.Where(c => c.Style.BackColor == Color.Yellow)
.Select(x => x.Value).ToString()
.ToList());
listBox1.Items.Add(cellColorValue);
var-cellColorValue=dataGridView1.Rows.Cast()
.SelectMany(row=>row.Cells.Cast()
.Where(c=>c.Style.BackColor==Color.Yellow)
.Select(x=>x.Value).ToString()
.ToList());
listBox1.Items.Add(cellColorValue);
因此,您试图在列表框中添加项目,但您为其提供了一个项目列表。这意味着,您不能简单地调用Add()
方法
您应该做的是,将列表cellcorvalue
传递到AddRange()
方法中,或者使用DataSource
对象绑定这些值
这样做:
listBox1.Items.AddRange(cellColorValue);
或
更新
我明白了,您生成的对象是EInumerable
对象,而AddRange()
方法不接受这些对象。我已经重构了LINQ表达式,因此它会相应地发送到列表框。假设您希望在列表框中获取DataGridView
的单元格值。见:
var cellColorValue = dataGridView1.Rows.Cast<DataGridViewRow>()
.SelectMany(row => row.Cells.Cast<DataGridViewCell>()
.Where(c => c.Style.BackColor == Color.Yellow)
.Select(cell => cell.Value.ToString()))
.ToArray();
谢谢你的提示,杰姆谢德。我已经试过了,但两者都不起作用…从“System.Collection.Generic.IEnumerable”到“System.Windows.Forms.ListBox.ObjectCollection”的转换无法完成!现在可以了。非常感谢Jamshaid!:)@Marcel16很乐意帮忙。如果有帮助,请务必接受答案。:)
var cellColorValue = dataGridView1.Rows.Cast<DataGridViewRow>()
.SelectMany(row => row.Cells.Cast<DataGridViewCell>()
.Where(c => c.Style.BackColor == Color.Yellow)
.Select(cell => cell.Value.ToString()))
.ToArray();
listBox1.Items.AddRange(cellColorValue);