我有两个清单: FPTStaticDataManagedStrategyAssetlist& FPTDocManagedStrategyList。
我希望能够从FPTStaticDataManagedStrategyAssetlist中选择一个随机资产,该资产在FPTDocManagedStrategyList中尚不存在以停止重复。
这是我目前的代码
FPTStaticDataManagedStrategyAssetlist[random.Next(0, FPTStaticDataManagedStrategyAssetlist.Count())];
但显然它可以包含重复的项目。任何想法?
答案 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())];