从列表中选择随机对象,在第二个列表中不存在

时间:2014-01-29 09:55:38

标签: c# linq

我有两个清单: FPTStaticDataManagedStrategyAssetlist& FPTDocManagedStrategyList。

我希望能够从FPTStaticDataManagedStrategyAssetlist中选择一个随机资产,该资产在FPTDocManagedStrategyList中尚不存在以停止重复。

这是我目前的代码

FPTStaticDataManagedStrategyAssetlist[random.Next(0, FPTStaticDataManagedStrategyAssetlist.Count())];

但显然它可以包含重复的项目。任何想法?

2 个答案:

答案 0 :(得分:2)

您可以使用Except方法:

var temp = FPTStaticDataManagedStrategyAssetlist.Except(FPTDocManagedStrategyList).ToList();
if (temp.Count > 0)
{
    var item = temp[random.Next(0, temp.Count)];
}
else
{
    // no items to choose from...
}

您还可以使用Jon Skeet here发布的方法,避免将Except的结果显示到列表中。

答案 1 :(得分:1)

//Filter away duplicates
var listTemp = listA.Where(i=> !listB.Contains(i)).ToList();
//Select random
var randomItem = listTemp[random.Next(0, listTemp.Count())];
相关问题