在LINQ表达式中创建选定项时

在LINQ表达式中创建选定项时

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

我希望Cars列表的 InventoryItem.UIElement 像这样:
Car 27 A

Car 28 B

Car 31 C

Car 48 D

ETC。

最佳答案

使用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更改为字符串,而无需对代码进行任何其他更改,顺便说一句。)

关于c# - 在LINQ表达式中创建选定项时获得顺序位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6915648/

10-12 02:00