Получить порядковый номер при создании выбранного элемента в выражении LINQ - PullRequest
6 голосов
/ 02 августа 2011

Как я могу получить порядковый номер при создании выбранных элементов в выражении LINQ?Например:

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();

Я хочу, чтобы InventoryItem.UIElement из списка машин был таким:

Car 27 A

Car 28 B

Car 31 C

Car 48 D

и т. Д.

1 Ответ

13 голосов
/ 02 августа 2011

Используйте перегрузку Select, которая обеспечивает индекс и значение.В этом случае я бы использовал AsEnumerable, чтобы выйти из контекста базы данных, а это не совсем то место, где вы хотите выполнять эту работу:

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();

(Вы можете изменить alphaOrdinals настрока без каких-либо других изменений в коде, кстати.)

...