,并得到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组?
在上面的代码中,它将它们排序并打印出来。我想访问他们小组明智的。
,并得到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组?
在上面的代码中,它将它们排序并打印出来。我想访问他们小组明智的。
lines.AsParallel().Select(x => x.TheUser)
应该回到你的IEnumrable TheUser的...
你真的应该使用微软的无框架这一点。刚刚的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 => { ... })
运行它给这种输出的:
可以看到,ManagedThreadId
变化的输入值,因此处理并行发生。
你需要更清楚一点,你真正想要做什么。 *我想要访问它们是什么组明智*意味着什么?你想在分组上做什么? –