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);