C# 从数组列表c中排除项#

C# 从数组列表c中排除项#,c#,C#,我正在使用ASP.NET 2013,我想绘制图表,并为每个点提供不同的颜色,除了黑色、透明等颜色 这是工作的罚款,但有一些颜色,我想排除 var colours = typeof(System.Drawing.Color) .GetProperties() .Where(x => x.PropertyType == typeof(System.Drawing.Color)) .Select(x =&g

我正在使用ASP.NET 2013,我想绘制图表,并为每个点提供不同的颜色,除了黑色、透明等颜色

这是工作的罚款,但有一些颜色,我想排除

var colours = typeof(System.Drawing.Color)
               .GetProperties()
               .Where(x => x.PropertyType == typeof(System.Drawing.Color))
               .Select(x => x.Name)
               .ToArray();

Random rColor = new Random();

foreach (var item in Chart2.Series[0].Points)
{
   item.Color = System.Drawing.Color.FromName(colours[rColor.Next(0, colours.Length)]); 
}

使用
Color[]excludeColors
Except

Color[] excludeColors = { Color.Black, ... };
var allColors = var colours = typeof(System.Drawing.Color)
               .GetProperties()
               .Where(x => x.PropertyType == typeof(System.Drawing.Color))
               .Select(x => System.Drawing.Color.FromName(x.Name));
Color[] usedColors = allColors.Except(excludeColors).ToArray();

foreach (var item in Chart2.Series[0].Points)
{
   Color randomColor = usedColors[rColor.Next(usedColors.Length)];
   item.Color = randomColor; 
}

因为您只需初始化一次,所以应该在构造函数中(或者您可以修改
excludeColors
)而不是在该方法中进行初始化。

使用
Color[]excludeColors
然后使用
if(!excludeColors.Contains(yourRandomColor){…})<或代码>也许考虑创建你自己的调色板的互补颜色,这样就不会有随机丑陋的冲突颜色。