从两个枚举中,应用 LINQ 得到对的方法是什么
喜欢
{Red,Car},{Red,Bike},{Green,Car},{Green,Bike},...
public enum Color
{
Red,Green,Blue
}
public enum Vehicle
{
Car,Bike
}
我可以用类似的东西吗
var query = from c in Enum.GetValues(typeof(Color)).AsQueryable()
from c in Enum.GetValues(typeof(Vehicle)).AsQueryable()
select new {..What to fill here?.. }
最佳答案
不要使用 c
作为范围变量两次,不要使用 AsQueryable
除非确实需要,否则以非常简单的方式使用匿名类型,并指定范围变量的类型以避免由于 Enum.GetValues 仅返回 Array
引起的问题。 :
var query = from Color c in Enum.GetValues(typeof(Color))
from Vehicle v in Enum.GetValues(typeof(Vehicle))
select new { Color = c, Vehicle = v };
(这相当于在相应的 .Cast<Color>
调用上调用 .Cast<Vehicle>
和 Enum.GetValues
。)
那么你可以这样写出来:
foreach (var pair in query)
{
Console.WriteLine("{{{0}, {1}}}", pair.Color, pair.Vehicle);
}
关于C# - 从两个枚举中获取可能的对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1828957/