Distinct()
Equals(object obj)
の定義済みメソッドを使用していDropDownItem
ます。適切なものを定義し、IEqualityComparer
それをメソッドに渡して、ネイティブメソッドを使用しないようDistinct(IEqualityComparer<T>)
に指示する必要がありますが、独自のイコライゼーションを使用する必要があります。Distinct
Equals(object obj)
class DropDownItemEqualityComparer : IEqualityComparer<DropDownItem>
{
#region IEqualityComparer<DropDownItem> Member
public bool Equals(DropDownItem x, DropDownItem y)
{
return
x == null || y == null
? false
: x.Value == y.Value && x.Text == y.Text;
//Or whatever properties you want to be equal
}
public int GetHashCode(DropDownItem obj)
{
if (obj != null)
return
obj.Value.GetHashCode() + obj.Text.GetHashCode();
else
throw new ArgumentNullException("obj");
}
#endregion
}
Distinct
次に、これをメソッドに与えることができます
var SalesOrgTypes = (from s in tblSales
orderby s.SalesOrg ascending
select new DropDownItem
{
Value = s.SalesOrg,
Text = s.SalesOrg + " - " + s.SalesOrgDesc
}).Distinct(new DropDownItemEqualityComparer());