这是解决方案中的代码示例。我正在寻找消除重复问题类的方法。我正在收看List中的Contains方法。如何检查一个元素是否在IEnumerable中重复?
public IEnumerable<Problem> Create(int quantify)
{
for (int i = 0; i < quantify; i++)
{
yield return Create();
}
}
这是解决方案中的代码示例。我正在寻找消除重复问题类的方法。我正在收看List中的Contains方法。如何检查一个元素是否在IEnumerable中重复?
public IEnumerable<Problem> Create(int quantify)
{
for (int i = 0; i < quantify; i++)
{
yield return Create();
}
}
如果你只是想消除任何重复和Problem
支持平等然后使用Distinct
方法。如果区分是基于属性,您可以
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);
}
}
}
如果你想坚持到迭代器块,你可以使用一个HashSet
不摆在首位取得任何重复Problem
实例使用GroupBy
Create(q).GroupBy(p => p.PropertyToCompare).Select(p => p.First());
:
IEnumerable<Problem> collection = ...;
IEnumerable<Problem> noRepeats = collection.Distinct();
代码示例对这个问题有什么作用?用这样的枚举块,你不能得到'ReferenceEquals:true'实例,并且可能只有'IEquatable :: Equals:true'元素......(取决于'Problem'和'Create()'的定义)? –
sehe