エンティティ データ モデルの一部ではないカスタム型へのクエリ結果の射影を使用しています。
public sealed class AlgoVersionCacheItem : NotificationObject
{
public int OrderId { get; set; }
public string OrderTitle { get; set; }
public int? CurrentVersion { get; set; }
public int CachedVersion { get; set; }
public IEnumerable<int> AvailableVersions { get; set; }
}
AvailableVersions
降順でソートしたい。したがって、私はAvailableVersions
射影の並べ替えを追加しようとしました:
return someQueryable
.Select(version => new AlgoVersionCacheItem
{
OrderId = version.OrderId,
OrderTitle = version.Order.Title,
CurrentVersion = version.Order.CurrentAlgoVersionId,
CachedVersion = version.Id,
AvailableVersions = version
.Order
.AlgoVersions
.Where(v => (allowUncommittedVersions || v.Statuses.Any(s => s.AlgoVersionStatusListItemId == ModelConstants.AlgoVersionCommitted_StatusId)) && v.Id != version.Id)
.OrderByDescending(v => v.Id) // this line will cause exception
.Select(v => v.Id)
})
.Where(item => item.AvailableVersions.Any())
.OrderByDescending(item => item.OrderId)
.ToArray();
System.Data.EntityCommandCompilationException
並べ替えを使用すると、クエリを実行すると with System.InvalidCastException
as inner 例外 がスローされます。
タイプ 'System.Data.Entity.Core.Query.InternalTrees.SortOp' のオブジェクトをタイプ 'System.Data.Entity.Core.Query.InternalTrees.ProjectOp' にキャストできません
.OrderByDescending(v => v.Id)
すべてが正常に動作しなくても。
これは、Entity Framework でサポートされていない別の機能ですか、それとも見逃していますか?
PS私は、後でクライアント側でアイテムをソートできることを知っていますが、サーバー側でのソートについて疑問に思っています。