C# - 从两个枚举中获取可能的对

标签 c# linq

从两个枚举中,应用 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/

相关文章:

c# - 计算具有相同项目数的多个 IEnumerable 的平均值

c# - 使用 OleDB 连接将撇号字符添加到 Excel 导出

c# - 如何使用 LINQ 从选择中返回一行?

c# - 在 Winform 或其等同物中访问 PrintPageEventArgs.PageVisual

c# - 具有最大日期和计数的 Entity Framework 分组依据

sql-server - 将具有多个内部连接的 sql 查询转换为 LINQ

c# - Xamarin.Forms 中选项卡式页面的标题截断

c# - Entity Framework 和类

c# - 如何用重复值更新元素值?

c# - 对数组中的重复对象求和