-1

CateringPurchaseOrder という名前のテーブルが 1 つあります。そのテーブルには、「PONO」という名前の列が 1 つあります。その列には同じ値が複数回含まれています。「pono」列の一意の値に基づいてレコードを取得したい。

例:

pono  column1
1        value1 
1        value2  
2        value3  
2        value4  

出力:

pono    coulm1 
1           value1  
2           value3  

私は次のコードで試しました:

IEnumerable<CateringPurchaseOrder> order =   entites.CateringPurchaseOrders.Distinct<CateringPurchaseOrder>(new CateringPorderComparer());

public class CateringPorderComparer : IEqualityComparer<CateringPurchaseOrder>
{
    bool IEqualityComparer<CateringPurchaseOrder>.Equals(CateringPurchaseOrder p1, CateringPurchaseOrder p2)
    {
        return p1.P_O_No == p2.P_O_No;
    }

    int IEqualityComparer<CateringPurchaseOrder>.GetHashCode(CateringPurchaseOrder obj)
    {
        return obj.P_O_No.GetHashCode();
    }
}

次のエラーが発生しました。

LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1[MilitarymessModel.CateringPurchaseOrder] Distinct[CateringPurchaseOrder](System.Linq.IQueryable`1[MilitarymessModel.CateringPurchaseOrder], System.Collections.Generic.IEqualityComparer`1[MilitarymessModel.CateringPurchaseOrder])' method, and this method cannot be translated into a store expression.

この問題の解決策はありますか?

4

1 に答える 1

4

エンティティへのLinqは、CateringPorderComparerをSQLに解析できません。

問題がなければ、データベースに実行させるのではなく、C#コードでDistinct操作を実行できます。行数と重複数によっては、これは問題にならない場合があります。

データベースクエリの後にDistinctを実行するには、Distinctを実行する前にEumerableに変換します。

entites.CateringPurchaseOrders.AsEnumerable().Distinct<CateringPurchaseOrder>(
new CateringPorderComparer());
于 2012-04-15T08:42:38.393 に答える