Linq to Entitiesを使用していますが、このエラーが発生します
The method Distinct is not supported
このコード行
var typeIds = _context.AttributeValues.Select(av => av.AttributeTypeId).Distinct();
どうしてこれなの?
Linq to Entitiesを使用していますが、このエラーが発生します
The method Distinct is not supported
このコード行
var typeIds = _context.AttributeValues.Select(av => av.AttributeTypeId).Distinct();
どうしてこれなの?
MSDNによると、ODataサービスを使用するいくつかのLINQメソッドはサポートされていません。以下は、サポートされていないメソッドの部分的なリストです。
サポートされていない操作の完全なリストについては、こちらを参照してください
ただし、回避策として、この場合は次のステートメントが機能するはずです。
var typeIds = _context.AttributeValues
.Select(av => av.AttributeTypeId)
.AsEnumerable()
.Distinct();
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と比較した場合のこのソリューションの利点は、サーバー側で区別されることです。