【问题标题】:Link random generated values to list Objects将随机生成的值链接到列表对象
【发布时间】:2017-05-08 19:36:23
【问题描述】:

我正在使用以下代码来生成随机颜色。

static Color[] colors = { Color.Red, Color.Green, Color.Yellow}; 
static Color GetRandomColor()
{
    var random = new Random();
    return colors[random.Next(colors.Length)];
}

现在我需要关联到一个用户列表:

        List<Utente> ListaUtente = new List<Utente>();
        ListaUtente.Add(new Utente(22, "Pedro", 555444333, "pedro@gmail.com"));
        ListaUtente.Add(new Utente(22, "Lucas", 555444333, "lucas91@gmail.com"));
        ListaUtente.Add(new Utente(22, "Rodrigo", 555444333, "rodrigo00@gmail.com"));
        ListaUtente.Add(new Utente(22, "Gaspar", 555444333, "gaspar@gmail.com"));
        ListaUtente.Add(new Utente(22, "Assis", 555444333, "assis@gmail.com"));

并将其显示在屏幕上,例如:用户 1 - 红色, 用户 2 - 绿色等。

最简单的方法是什么?我不确定如何连接这两个代码块。只是为了给你一些背景我在做医院管理服务,我需要为每个用户分配一个紧急颜色。

【问题讨论】:

  • 这是winforms、WPF、ASP.NET、控制台...?
  • Utente添加颜色属性?
  • 创建List&lt;Tuple&lt;Color, Utente&gt;&gt; 而不是List&lt;Utente&gt;?

标签: c# arrays list colors static


【解决方案1】:
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Color { get; set; }
}
public class Colours
{
    public string ColourName { get; set; }
}

class Program
{
    static void Main(string[] args)
    {

        List<Person> People = new List<Person>()
        {
           new Person { Id = 1, Name = "Dave" },
           new Person { Id = 2, Name = "Joe" },
           new Person { Id = 3, Name = "Stephen"},
           new Person { Id = 4, Name = "Sue" },
           new Person { Id = 5, Name = "Jemma" },
           new Person { Id = 6, Name = "Sharon" },
        };
        Dictionary<int, Colours> Colours = new Dictionary<int, Colours>()
        {
            { 1, new Colours { ColourName = "Color.Red" }},
            { 2, new Colours { ColourName = "Color.Green"}},
            { 3, new Colours { ColourName = "Color.Blue"}},
        };

        Random RandomNumber = new Random();

        int ListPostionToRemoveAt = RandomNumber.Next(1, People.Count);
        int RandomColourPostion = RandomNumber.Next(1, Colours.Count);

        Person p = People[ListPostionToRemoveAt];

        Colours ColourToAssign = Colours[RandomColourPostion] ;
        p.Color = ColourToAssign.ColourName;
        Console.Write("Persons Name: " + p.Name +" Persons Colour:"+ p.Color);
        Console.ReadLine();
    }
}

【讨论】:

  • 基本上使用字典来存储您的颜色,因为它可以更顺畅地将它们链接到用户。你可以很容易地扩展它,添加一个 foreach 循环来遍历列表,删除使用过的元素/人物以确保你不会重复。如果您需要更多指导,请询问。
  • 谢谢,现在就试试这个,稍后会给你反馈!
  • 所以从我的理解来看,这段代码不需要我之前发布的代码,对吧?还有你有人的地方,我用“Utente”代替它吧?
  • 你不知道,这对于大型程序来说实际上可能是不好的做法。我这样做是因为我通常将字典与 asp 中的选择列表相关联。
  • 是的,但这只会将 1 个随机颜色附加到 1 个随机用户。您需要使用 foreach 循环遍历列表,删除然后将用户添加到新列表以避免重复,然后您将获得具有相关颜色的人员的完整列表。
猜你喜欢
  • 2012-07-16
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 2018-08-06
  • 2019-08-02
  • 2013-02-20
  • 2015-07-30
相关资源
最近更新 更多