这是解决方案的代码示例。我正在寻找消除重复问题类的方法。我正在看List中的Contains方法。
public IEnumerable<Problem> Create(int quantify)
{
for (int i = 0; i < quantify; i++)
{
yield return Create();
}
}
答案 0 :(得分:4)
如果您只是想消除任何重复项并且Problem
支持相等,那么请使用Distinct
方法。
IEnumerable<Problem> collection = ...;
IEnumerable<Problem> noRepeats = collection.Distinct();
答案 1 :(得分:1)
如果你想坚持使用迭代器块,你可以使用HashSet
来首先不产生任何重复的Problem
个实例:
public IEnumerable<Problem> Create(int quantify)
{
HashSet<Problem> problems = new HashSet<Problem>();
for (int i = 0; i < quantify; i++)
{
var problem = Create();
if(!problems.Contains(problem))
{
yield return problem;
problems.Add(problem);
}
}
}
答案 2 :(得分:0)
如果区别基于属性,则可以使用GroupBy
Create(q).GroupBy(p => p.PropertyToCompare).Select(p => p.First());