开发者

Get the ordinal position while creating selected Item in a LINQ expression

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开发者_如何学Python,
            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.)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜