If we want to add a string to DataGridView, in addition to adding an object DataGridViewRow, we could do this by passing an array of the object ( object[])
dgv.Rows.Add(objArray); //objArray is of type object[]
However, if we want to add a series of lines to DataGridView, we cannot pass IEnumerable<object[]>, but we can only transmitDataGridViewRow[]
dgv.Rows.AddRange(ienumObjArray); //not allowed, ienumObjArray is of type IEnumerable<object[]>
dgv.Rows.AddRange(dgvRows); //allowed, dgvRows is DataGridViewRow[]
My question is: is there a way to drop IEnumerable<object[]>in DataGridViewRow[](if possible with LINQ) so that we can do something like this
dgv.Rows.AddRange(ienumObjArray.DoSomethingWithLinq(x => doSomething));
and no need to add object[]one by one?
foreach(object[] objArray in ienumObjArray)
dgv.Rows.Add(objArray); //adding one by one, is it possible to get rid this of?
Edit:
It is done on WinForms
Edit 2:
applying @abatishchev's suggestion (without AddRange), I came across a strange result. If I put:
ienumObjArray.Select(objArr => dgv.Rows.Add(objArr));
or
var result = ienumObjArray.Select(objArr => dgv.Rows.Add(objArr));
dgv .
,
ienumObjArray.Select(objArr => dgv.Rows.Add(objArr)).ToArray();
ienumObjArray.Select(objArr => dgv.Rows.Add(objArr)).ToList();
ienumObjArray.Select(objArr => dgv.Rows.Add(objArr)).Count();
or
var result = ienumObjArray.Select(objArr => dgv.Rows.Add(objArr))
foreach(int i in result){
//do something
}
! ?