C#LINQ自动生成的数字或索引

use*_*675 2 c# linq

在派生组合时,生成自动生成数字的可能方法是什么.

public enum Color
{
    Red,Green,Blue
}

public enum Vehicle
{
    Car,Bike
}
Run Code Online (Sandbox Code Playgroud)

(即){Red,Car},{Red,Bike},{Green,Car},{Green,Bike} ......

(Jon Skeet帮助我解决了这个问题).

var query = from Color c in Enum.GetValues(typeof(Color))
            from Vehicle v in Enum.GetValues(typeof(Vehicle))
            select new { Color = c, Vehicle = v };
Run Code Online (Sandbox Code Playgroud)

现在我想要这样的组合

{1,Red,Car},{2,Red,Bike},{3,Green,Car},{4,Green,Bike},{5,Blue,Car},{6,Blue,Bike}
Run Code Online (Sandbox Code Playgroud)

生成自动数字的方法是什么?

Ahm*_*eed 8

另一种选择是使用包含项目索引的重载Select方法.基于原始查询,您可以使用:

var indexedQuery = query.Select((item, i) => new { Index = i + 1, Item = item });
foreach (var o in indexedQuery)
{
   Console.WriteLine("{0},{1},{2}", o.Index, o.Item.Color, o.Item.Vehicle);
}
Run Code Online (Sandbox Code Playgroud)


egl*_*ius 5

尝试:

int optionNumber = 0;
var query = from Color c in Enum.GetValues(typeof(Color))
            from Vehicle v in Enum.GetValues(typeof(Vehicle))
            select new { Number = optionNumber++, Color = c, Vehicle = v };
Run Code Online (Sandbox Code Playgroud)