2015-12-07 55 views
2

我张贴的问题here单独列表分组

,并得到this answer

Parallel.ForEach(lines.GroupBy(line => line.TheUser), grp => { 
// processing user grp.Key 
foreach(var line in grp) { 
    // do the stuff here 
} 
}); 

如何才能获得单独而不是一个foreach的用户1或用户2组?

在上面的代码中,它将它们排序并打印出来。我想访问他们小组明智的。

+0

你需要更清楚一点,你真正想要做什么。 *我想要访问它们是什么组明智*意味着什么?你想在分组上做什么? –

回答

1
lines.AsParallel().Select(x => x.TheUser) 

应该回到你的IEnumrable TheUser的...

0

你真的应该使用微软的无框架这一点。刚刚的NuGet“RX-主”,然后你可以这样做:

var query = 
    from grp in lines.GroupBy(line => line.TheUser).ToObservable() 
    from line in grp.ToObservable() 
    from output in Observable.Start(() => /* Do lengthy process here */) 
    select new { line, output }; 

query.Subscribe(result => { /* get the results here */ }); 

现在,只是让我可以证明,这个工程:

var query = 
    from grp in Enumerable.Range(0, 20).GroupBy(x => x % 5).ToObservable() 
    from line in grp.ToObservable() 
    from tid in Observable.Start(() => System.Threading.Thread.CurrentThread.ManagedThreadId) 
    select new { line, tid }; 

query.Subscribe(x => { ... })运行它给这种输出的:

results

可以看到,ManagedThreadId变化的输入值,因此处理并行发生。