これはソリューションのコード例です。問題クラスを削除する方法を探しています。 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
メソッドを使用し、その後平等をサポートしている場合。
IEnumerable<Problem> collection = ...;
IEnumerable<Problem> noRepeats = collection.Distinct();
イテレータブロックに固執する場合は、最初の場所で任意の繰り返しProblem
インスタンスが得られないためにHashSet
を使用することができます。区別はすることができますプロパティに基づいている場合
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);
}
}
}
使用するGroupBy
Create(q).GroupBy(p => p.PropertyToCompare).Select(p => p.First());
コードサンプルには何が関係していますか?このような列挙子ブロックを使用すると、 'ReferenceEquals:true'インスタンスを取得できず、おそらく' IEquatable :: Equals:true'要素( 'Problem'と' Create() 'の両方の定義に依存します) –
sehe