根据特定顺序的值排序BlockingCollection<T>
中的项目的最佳方法是什么?我知道有一个OrderBy
方法,它可以用来实现排序吗?Sorting/Ordering a BlockingCollecion
0
A
回答
-1
入住这https://msdn.microsoft.com/en-us/library/bb534966(v=vs.110).aspx
从MSDN:
class Pet
{
public string Name { get; set; }
public int Age { get; set; }
}
public static void OrderByEx1()
{
Pet[] pets = { new Pet { Name="Barley", Age=8 },
new Pet { Name="Boots", Age=4 },
new Pet { Name="Whiskers", Age=1 } };
IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);
foreach (Pet pet in query)
{
Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
}
}
/*
This code produces the following output:
Whiskers - 1
Boots - 4
Barley - 8
*/
2
这听起来像你需要根据一些比较标准的队列订购的项目。这基本上是一个Priority Queue
。
有一种方法可以使用BlockingCollection<T>
的优先级队列。您必须编写一个实现IProducerConsumerCollection
的Priority Queue
,并将该队列的实例传递给适当的BlockingCollection
构造函数。
幸运的是,微软提供了sample code that demonstrates how to do this。它还包含简单优先级队列的源代码。
在线上有很多其他的优先级队列实现可用,for example here。但是,你必须修改它们来实现IProducerConsumerCollection
,这不太可能是一件小事。
[编辑]我发现一个concurrent priority queue that implements IProducerConsumerCollection
- 你应该可以使用它。
+0
该链接对于并发优先级队列不起作用。 –
相关问题
- 1. Scipy稀疏矩阵求幂:a ** 16比a * a * a * a * a * a * a * a * a * a * a * a * a * a * a * a * a *
- 2. 什么是后{a = 5; A = A ++; Syso(a);}
- 3. A a有什么区别?和A a();?
- 4. 转换A○至A A○
- 5. 输入(a + b)** 2,输出a * a + a * b + b * a + b * b
- 6. numexpr.evaluate(“a + b”,out = a)
- 7. C++ comp(a,a)== false
- 8. if(“a”==“a”)not working
- 9. C++:&a [2] - &a [1] ==?
- 10. 如何将/?a = a重写为/ a /?
- 11. Haskell sequencelistIO [a - > IO a] - > a - > IO
- 12. 为什么`A&a = a`有效?
- 13. x的值是什么? X = A ++ + ++ A + A ++
- 14. 为什么a + = x比a = a + x慢?
- 15. a,&a和* a有什么区别?
- 16. A * pA = new A之间的区别;和A * pA = new A();
- 17. <a></a><a></a>标签
- 18. 为什么`[1,“a”] :: [forall a。显示a => a]`不允许?
- 19. a ++和++ a或a--和--a在java中有什么区别?
- 20. 语法错误,意想不到的 'A A A A'(T_STRING)
- 21. PHP变换阵列'a','b','c'到'a/b/c','a/b','a'
- 22. a + = b和a = + b之间的区别是什么,a ++和++ a?
- 23. 从{a-b,b-c,c-a}改变为{(a,b),(b,c),(c,a)}?
- 24. 混合两个矢量:[a a]和[b b] to [a b a b]
- 25. 当a = 1时,a,a ++,++ a的输出是什么;
- 26. Codility测试Java数组S = A [A [A [A [int]]]]?
- 27. Monad m => a - > [a - > m a] - > m a
- 28. a + = a ++ * a ++ * a ++ in Java。它如何得到评估?
- 29. [a - > a] - >(a - > a)的最惯用的实现`
- 30. .A
为什么你需要对它进行排序? – Dennis
@丹尼斯我需要根据参数对队列进行排序,因此它不是先到先得! –
http://stackoverflow.com/questions/4016509/concurrent-priority-queue-in-net-4-0 –