Chào buổi sáng!EF khác biệt (IEqualityComparer) Lỗi
Given:
public class FooClass
{
public void FooMethod()
{
using (var myEntity = new MyEntity)
{
var result = myEntity.MyDomainEntity.Where(myDomainEntity => myDomainEntity.MySpecialID > default(int)).Distinct(new FooComparer);
}
}
}
public class FooComparer : IEqualityComparer<MyEntity.MyDomainEntity>
{
public bool Equals(MyEntity.MyDomainEntity x, MyEntity.MyDomainEntity y)
{
return x.MySpecialID == y.MySpecialID;
}
public int GetHashCode(MyEntity.MyDomainEntity obj)
{
return obj.MySpecialID.GetHashCode();
}
}
này sẽ biên dịch, nhưng trên runtime tôi sẽ nhận được một Linq to Entity could not translate Comparer
-Exception.
Bất kỳ đề xuất nào?
Có cơ hội nào để làm điều này không có trong .NET-Layer? Bằng cách nào đó nói cho EF-gọi để làm điều này trong SQL? –
Xem bản chỉnh sửa của tôi - sử dụng nhóm và bạn sẽ nhận được hành vi mong muốn. Nó sẽ là tốt đẹp để có "DistinctBy" trong khuôn khổ (và xử lý bởi EF vv) nhưng tôi nghĩ rằng phiên bản nhóm sẽ làm những gì bạn muốn. –
Cảm ơn bạn! Điều này có vẻ rất hợp lý đối với tôi, vì bạn đang thực hiện nhóm trên một IQueryable. Tôi sẽ thử điều này sau! Tái bút: Có, bạn đã nhận được Điều kiện riêng biệt chính xác :) –