私はGroupByを匿名型ではなく、具象クラスをキーとして使用しようとしました。私はEqualsメソッドをオーバーライドしました。それは助けになりませんでした。私は具体的な型をキーとして使うことに問題があるのを見ましたが、それを使用する際のトラブルについては言及していませんでした。 デバッグセッションの結果はあなたがあまりにもクラス2にGetHashCodeメソッドをオーバーライドする必要が具体的なクラスキーを持つGroupBy
class Program
{
static void Main(string[] args)
{
DateTime val = DateTime.Now;
bool testEquality = new Class2(val) == new Class2(val);
bool testEquality2 = new Class2(val).Equals(new Class2(val));
bool testEquality3 = new Class2(val).Equals(new Class2(val.AddDays(1)));
List<Class1> list = new List<Class1>
{
new Class1(1, val),
new Class1(2, val.AddHours(1)),
new Class1(2, val.AddHours(2)),
new Class1(2, val.AddHours(1)),
new Class1(2, val.AddHours(1)),
};
var grouped = list.GroupBy(x => new Class2(x.prop2));
}
}
internal class Class1
{
public int prop1;
public DateTime prop2;
public Class1(int v1, DateTime v2)
{
prop1 = v1;
prop2 = v2;
}
}
internal class Class2
{
public DateTime prop2;
public Class2(DateTime v)
{
prop2 = v;
}
public override bool Equals(object obj)
{
return this.prop2 == ((Class2)obj).prop2;
}
}
正確にはどのような問題がありますか?あなたは直面しているエラーは何ですか? –
@Evgあなたは 'testEquality'に対してどのような価値を期待していますか?また、 'new Class2(val).Equals(" ")'の結果はどうなると思いますか?あるいは '新しいClass2(val).Equals(null)'? – mjwills