0

I got ienumerable method which I read data from database and this data i put in array of object

while (reader.Read())
{
    var values = new object[reader.FieldCount];
    reader.GetValues(values);
    yield return values;
}

And in another method i'm iterating these objects

foreach (var items in repo.ExecuteReader()
   {
        rss.Id = items[0]; // not work
        yield return items;
   }

How can I indexing there array of 'items'?

semper fi
  • 727
  • 3
  • 17
  • 32

3 Answers3

1
SqlDataReader reader = repo.ExecuteReader();
while (reader.reas.Read()) {
       rss.Id = (int)reader[0]; // should work

UPDATE

Try this


The result of ExecuteReader() method must be unboxed (looks like a cast, but this is unboxing) to the correct Type, before it can be assigned to an object or variable.

Are you asking why?

Community
  • 1
  • 1
Emanuele Greco
  • 12,551
  • 7
  • 51
  • 70
1

Try to cast it first, see below:

foreach (var items in repo.ExecuteReader()
   {
        var obj[] = (object[])items;
        rss.Id = obj[0];
        yield return obj;
   }
Arnel Aves
  • 87
  • 5
0

Solution is provided by Hari Prasad, just need to change from

   foreach (var items in repo.ExecuteReader()) {} 

to

   foreach (var object[] items in repo.ExecuteReader()

Now indexing and cast are working

semper fi
  • 727
  • 3
  • 17
  • 32