frenchie
frenchie

Reputation: 51927

adding index to linq query result

I have a linq query that returns a list of MyObject. I'd like to add a property to MyObject called TheIndex and that contains the ordinate of the item in the sequence.

In other words, I need something like this:

var TheResult = from d in MyDataContext
                where.....
                select new MyObject
                {
                   Property1 = d.whatever,

                   TheIndex = ?

                 }

The query returns a list of MyObject and I'd like each item in the list to contain the index as one of its property.

Thanks.

Upvotes: 8

Views: 5673

Answers (1)

Adam Rackis
Adam Rackis

Reputation: 83358

Once you get away from the query syntax, you'll find a Select overload that gives you the index you're looking for.

var result = MyDataContext
   .Where(d => d.Prop == "A")
   .AsEnumerable()
   .Select((d, i) => 
      new MyObject() {
         Property1 = d.whatever,
         TheIndex = i
    });

Upvotes: 17

Related Questions