Сопоставление случайно сгенерированного числа со свойствами объекта - PullRequest
1 голос
/ 12 июля 2020

У меня есть генератор случайных чисел с max, min, показанным ниже. Можно ли определить, соответствует ли свойство объекта (int ID в моем случае) сгенерированному случайному числу? Или есть другой способ «случайным образом» выбрать объект из коллекции?

Генератор случайных чисел:

private readonly Random _random = new Random();
public int RandomNumber(int min, int max)
{
   return _random.Next(min, max);
}

И я хочу выбрать объект, расположенный в коллекция, например:

public class Staff
{
     public int ID;
     public Staff(int ID)
     {
         ID = this.ID
     }
     static void Main(string[] args)
     {
         List<Staff> StaffList = new List<Staff>();
         StaffList.Add(new Staff(6);
     }
}

Любые предложения приветствуются

Ответы [ 2 ]

3 голосов
/ 12 июля 2020

Прежде всего вам нужно исправить свой конструктор, вы получили задание в обратном порядке

    public Staff(int ID)
    {
        this.ID = ID;
    }

Вот как вы получаете случайный элемент из списка:

var randomStaffItem = StaffList[RandomNumber(0, StaffList.Count)];
1 голос
/ 12 июля 2020

Лев дал отличный ответ о выборе случайного Staff экземпляра из вашего Списка.

Вы также спросили:

... возможно ли определить, есть ли объект свойство (int ID в моем случае) соответствует сгенерированному случайному числу?

Вы можете использовать Any () , чтобы определить, существует ли идентификатор. Если вам нужен фактический соответствующий экземпляр, вы можете использовать вместо него FirstOrDefault () . Оба они получают предикат в форме выражения lamba .

Примеры использования Any() и FirstOrDefault() ниже:

class Program
{

    private static readonly Random _random = new Random();
    public static int RandomNumber(int min, int max)
    {
        return _random.Next(min, max);
    }

    static void Main(string[] args)
    {
        List<Staff> StaffList = new List<Staff>();
        for(int i=1; i<=10; i++)
        {
            StaffList.Add(new Staff(i));
        }

        int rndID = RandomNumber(1, 21); // 1 to 20 inclusive
        Console.WriteLine("Random ID: " + rndID.ToString());

        var StaffExists = StaffList.Any(s => s.ID == rndID);
        if (StaffExists)
        {
            Console.WriteLine("There does exist a staff member with an ID of " + rndID.ToString());
        }
        else
        {
            Console.WriteLine("There does NOT exist a staff member with an ID of " + rndID.ToString());
        }

        var StaffMatch = StaffList.FirstOrDefault(s => s.ID == rndID);
        if (StaffMatch != null)
        {
            Console.WriteLine("Match found: " + StaffMatch.ID.ToString());
        }
        else
        {
            Console.WriteLine("No match found.");
        }

        Console.Write("Press Enter to Quit");
        Console.ReadLine();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...