Reputation: 425
I have a two lists: FPTStaticDataManagedStrategyAssetlist & FPTDocManagedStrategyList.
I want to be able to choose a random asset from FPTStaticDataManagedStrategyAssetlist, that doesn't already exist in FPTDocManagedStrategyList to stop duplicates.
This is my code currently
FPTStaticDataManagedStrategyAssetlist[random.Next(0, FPTStaticDataManagedStrategyAssetlist.Count())];
but obviously it can include duplicated items. Any Ideas?
Upvotes: 0
Views: 73
Reputation: 292465
You can use the Except
method:
var temp = FPTStaticDataManagedStrategyAssetlist.Except(FPTDocManagedStrategyList).ToList();
if (temp.Count > 0)
{
var item = temp[random.Next(0, temp.Count)];
}
else
{
// no items to choose from...
}
You can also avoid materializing the result of Except
to a list, by using the method posted by Jon Skeet here.
Upvotes: 2
Reputation: 3643
//Filter away duplicates
var listTemp = listA.Where(i=> !listB.Contains(i)).ToList();
//Select random
var randomItem = listTemp[random.Next(0, listTemp.Count())];
Upvotes: 1