我有一个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。
可能吗?我现在正在尝试没有任何结果。
答案 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)