2015-12-07 58 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變化的輸入值,因此處理並行發生。