Получить случайный объект из массива для другого поля ID C # - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть ArrayList объекта (C #).Каждый объект имеет идентификатор и значение.

Мне нужно получить 1 случайный объект для каждого идентификатора.

Класс объектов создается таким образом

public class ObjectRandom
{
    int32 id { get; set; }
    string value { get; set;}
}

Например, этот ArrayList имеет 6000 ObjectRandom.

Идентификатор идентификатора МОЖЕТ быть последовательным или нет.

Таким образом, если для каждого пользователя имеется 500 объектов, это означает, что в нем 12 пользователей. (ID1, ID2, ID5, ID10, ID11, ID15 ID22 ETC).

Я бы взял только из ArrayList (то есть ВСЕ 6000 объектов) 1 ObjectRandom Для каждого идентификатора.

Возможно ли это?Я пытаюсь безрезультатно.

1 Ответ

0 голосов
/ 21 ноября 2011
void Main()
{
    var list = new List<ObjectRandom>()
    { 
        new ObjectRandom(){ id = 1, value = "a"},
        new ObjectRandom(){ id = 2, value = "b"},
        new ObjectRandom(){ id = 3, value = "c"},
        new ObjectRandom(){ id = 1, value = "d"},
        new ObjectRandom(){ id = 2, value = "e"},
        new ObjectRandom(){ id = 3, value = "f"},
    };
    var rnd = new Random();
    var q = from a in list.GroupBy (l => l.id)
            let col = a.ToList()
            select col[rnd.Next(0, col.Count)];
}

public class ObjectRandom 
{
    public int id { get; set; }
    public string value { get; set;}
}

Если вам нужно использовать ArrayList вместо общего списка, используйте:

from a in list.Cast<ObjectRandom>().GroupBy (l => l.id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...