У меня есть список этого класса
public class TB_EDS_LOG
{
public string CLASS_NAME { get; set; }
public string FIELD { get; set; }
public Nullable<decimal> OID { get; set; }
public string CODE_OF { get; set; }
public string OLD_VALUE { get; set; }
public string NEW_VALUE { get; set; }
public string ACTION { get; set; }
public Nullable<short> ISPASS { get; set; }
public string RESAULT { get; set; }
public string USER_ID { get; set; }
public Nullable<System.DateTime> DATEOF { get; set; }
public string EDS_ID { get; set; }
public decimal ID { get; set; }
public Nullable<decimal> F1 { get; set; }
public string FK_GISTABLECODE { get; set; }
public string FK_GISCODE { get; set; }
public Nullable<decimal> ZID { get; set; }
}
Я хочу использовать linq для группировки этих списков по двум столбцам.поэтому я использую этот класс:
private class ClassOid
{
public string CLASS_NAME { get; set; }
public decimal? OID { get; set; }
}
и синтаксис запроса:
from dataGiven in data
group dataGiven by new ClassOid
{
CLASS_NAME = dataGiven.CLASS_NAME,
OID = dataGiven.OID
};
, но это не работает должным образом и возвращает все строки.когда я использую анонимный тип, он работает нормально.
from dataGiven in data
group dataGiven by new
{
CLASS_NAME = dataGiven.CLASS_NAME,
OID = dataGiven.OID
};
мне нужно использовать только анонимный тип, а не тип класса?
РЕДАКТИРОВАТЬ:
Я переопределил Equalsи GetHashCode, как показано ниже.но все равно не повезло.
public override bool Equals(object other)
{
var classOid = other as ClassOid;
return classOid != null && (string.Equals(CLASS_NAME, classOid.CLASS_NAME) && OID == classOid.OID);
}
public override int GetHashCode()
{
return CLASS_NAME.GetHashCode()
^ OID.GetHashCode();
}