从一个队列中删除另一个队列中存在的元素

Set*_*can 1 .net c# asp.net

使用C#

我有

队列N:3,4,9,11

队列A:1,2,3,4,8,9,11,12,13

我想删除Queue N中存在的队列A中的所有元素

最后得到队列R:1,2,8,12,13

我怎么在C#中这样做

尝试使用someones API,它们提供了获取两个队列的方法,我需要根据返回的一个队列进行过滤.

谢谢,

-Seth

更新的代码示例:

我正在使用自定义数据类型ModuleDetails

Queue<ModuleDetails> defaultQueue = apiCallDefault();
Queue<ModuleDetails> modQueue = apiCallAllModules();
Run Code Online (Sandbox Code Playgroud)

Jam*_*acs 6

LINQ-to-Objects最容易实现...

var qN = new Queue<int>(new[]{3, 4, 9, 11});
var qA = new Queue<int>(new[]{1, 2, 3, 4, 8, 9, 11, 12, 13});
var qR = qA.Except(qN);
Run Code Online (Sandbox Code Playgroud)

更新:只要ModuleDetails实现IEquatable,下面的代码就可以了.如果无法修改ModuleDetails,则可以始终提供IEqualityComparer作为Except的第二个参数,它定义了如何确定相等性.