1

データベースからデータをフェッチする Linq クエリがあります。問題は、ユーザーがAPIロールテーブルにあるロールを持っているかどうかを調べるために「any」を使用していることです。クエリは以下のとおりで、ダミー データを使用しています。しかし、データベースに対してクエリを実行するたびに、Contains 演算子以外のクエリ演算子の LINQ to SQL 実装ではローカル シーケンスを使用できません。

_apiRepository.GetQueryable<ApiInstance>() .SelectMany(apiInstance => apiInstance.ApiInstanceRoles) .Where(apiInstanceRole => CurrentUser.UsersInRoles.Any(cr => cr.RoleId == apiInstanceRole.RoleId))

4

1 に答える 1

2

Contains次のように、クエリを で書き直してみてください。

_apiRepository
    .GetQueryable<ApiInstance>()
    .SelectMany(apiInstance => apiInstance.ApiInstanceRoles)
    .Where(apiInstanceRole => CurrentUser
        .UsersInRoles
        .Select(cr =>cr.RoleId)
        .Contains(apiInstanceRole.RoleId))
于 2012-12-30T13:29:08.730 に答える