How to sort a concurrent collection in .NET 4.0
13,417
Solution 1
To expand on DSW's answer, you can use the OrderBy on an enumerable.
customCollection.OrderBy(cc => cc.FieldToOrderBy);
You can also do it in descending order:
customCollection.OrderByDescending(cc => cc.FieldToOrderBy);
Solution 2
you can use OrderBy
method for sorting
and also try this too..
var result = stringCollection.AsParallel().AsOrdered();
for more information check below link
http://msdn.microsoft.com/en-us/library/dd460719.aspx, you can lean how to do complex sorting using PLINQ
, e.g:
var q2 = orders.AsParallel()
.Where(o => o.OrderDate < DateTime.Parse("07/04/1997"))
.Select(o => o)
.OrderBy(o => o.CustomerID) // Preserve original ordering for Take operation.
.Take(20)
.AsUnordered() // Remove ordering constraint to make join faster.
.Join(
orderDetails.AsParallel(),
ord => ord.OrderID,
od => od.OrderID,
(ord, od) =>
new
{
ID = ord.OrderID,
Customer = ord.CustomerID,
Product = od.ProductID
}
)
.OrderBy(i => i.Product); // Apply new ordering to final result sequence.
Solution 3
you can either use PLINQ or you can write implement your own parallel sort function like the one in this article http://www.emadomara.com/2011/08/parallel-merge-sort-using-barrier.html
Related videos on Youtube
Author by
mitul patel
Updated on June 04, 2022Comments
-
mitul patel almost 2 years
How to sort a concurrent collection in .NET 4.0 For example I have constructed my ConcurrentBag collection. How can I sort the elements in it?
ConcurrentBag<string> stringCollection; ConcurrentBag<CustomType> customCollection;
-
alun almost 13 yearsDo you mean that you want a new sorted collection with all the elements at some point in time or do you want it to be sorted all the time and draw from it in that order or something to that effect?
-
-
tzup almost 13 yearsMan, that's one expensive way to do it!
-
Jalal Said almost 13 yearsYes I think so, I just added an alternative solution, do you think this should be deleted?
-
Berin Loritsch about 9 yearsOrderBy just sorts a new IEnumerable. The underlying data structure does not change.
-
Kim over 8 yearsBut the objects remain in the concurrent collection. How can I remove the oldest items?
-
dyslexicanaboko over 4 yearsUsing the
.AsParallel()
cut my execution time over 1.7M items in half. Great tip.