从不同ID字段C#的数组中获取随机对象

时间:2011-11-21 16:41:40

标签: c# object random arraylist

我有一个ObjectList(C#)。 每个对象都有ID和值。

我需要为每个ID获取1个Random对象。

Object Class以这种方式构建

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

例如此ArrayList具有6000个ObjectRandom。

ID可以是顺序的,也可以不是。

因此,如果每个用户有500个对象,则意味着有12个用户。 (ID1,ID2,ID5,ID10,ID11,ID15 ID22 ETC)。

我会从The ArrayList(即所有6000个对象)中获取 1 ObjectRandom 对于每个ID。

可能吗?我现在正在尝试没有任何结果。

1 个答案:

答案 0 :(得分:0)

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)