2

Linq to Entitiesを使用していますが、このエラーが発生します

The method Distinct is not supported

このコード行

var typeIds = _context.AttributeValues.Select(av => av.AttributeTypeId).Distinct();

どうしてこれなの?

4

2 に答える 2

1

MSDNによると、ODataサービスを使用するいくつかのLINQメソッドはサポートされていません。以下は、サポートされていないメソッドの部分的なリストです。

  • 全て
  • どれでも
  • コンキャット
  • DefaultIfEmpty
  • 明確
  • それ外
  • 交差する
  • 連合
  • ジップ

サポートされていない操作の完全なリストについては、こちらを参照してください

ただし、回避策として、この場合は次のステートメントが機能するはずです。

var typeIds = _context.AttributeValues
                      .Select(av => av.AttributeTypeId)
                      .AsEnumerable()
                      .Distinct();
于 2014-07-17T11:30:56.780 に答える
0

QueryByCube解決策は、私の製品であるAdaptiveLINQ(www.adaptivelinq.com )が提供する方法(サーバー側)を使用してWCFデータサービスを定義することです。このメソッドは、(select演算子で表される)射影を集計に変換します

1つのディメンションでキューブを定義する必要があります:AttributeTypeId

av => av.AttributeTypeId

クエリ可能なコレクションを提供するデータサービスを定義します。

yourDbContext.AttributeValues.QueryByCube(yourCube);

これで、ODataプロトコルを使用してサービスを照会できます。

http://.../myService.svc/AttributeValues?$select=AttributeTypeId

または、C#クライアントを使用している場合:

serviceContext.AttributeValues.Select(x => x.AttributeTypeId);

提案された回避策AJQarshiと比較した場合のこのソリューションの利点は、サーバー側で区別されることです。

于 2014-07-19T14:37:12.663 に答える