How can I get the ordinal position while creating selected Items in a LINQ expression? For example:
var alphaordinals = new string[] { "A", "B", "C", "D", "E" }; // etc.
var q = from car in datacontext.Cars
select new InventoryItem
{
Name = car.Name,
Price = car.Price,
UIElement = "Car " + car.Id.ToString() + ???
};
return q.ToList();
I want the InventoryItem.UIElement of the list of Cars to be like :
Car 27 A
Car 28 B
Car 31 C
Car 48 D
etc.
Use the overload of Select
which provides the index as well as the value. In this case I'd use AsEnumerable
to get out of the database context, which isn't really where you want to be doing this work:
string[] alphaOrdinals = { "A", "B", "C", "D", "E" };
var query = dataContext.Cars
.AsEnumerable()
.Select((car, index) => new InventoryItem {
Name = car.Name,
Price = car.Price,
UIElement = string.Format("Car {0} {1}",
car.Id,
alphaOrdinals[index])
}).ToList();
(You can change alphaOrdinals
to a string without any other change to the code, btw.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With