私はLinqクエリの結果からディクショナリを作成/返す必要があります。私は考えることができるすべてについて試してきて、問題に取り組んでいます。ここに私が現在試みていることがあります...リターンするC#Linqクエリ<int,int[]>
public static Dictionary<int,int[]> GetEntityAuthorizations(int userId)
{
using (MyDb db = new MyDb())
{
var query = db.EntityManagerRoleAssignments.Where(x => x.EntityManager.ManagerId == userId);
var entityId = query.Select(x => x.EntityManager.EntityId);
var roles = query.Select(x => x.RoleId).ToArray();
var result = query.ToDictionary(entityId, roles);
return result;
}
}
助けを借りてください。私がこれから返すために探しているのは、KeyがentityIdまたはEntityManager.EntityIdであり、Valueが関連するRoleIdの配列であるDictionaryです。
現在のところ、コンパイル時に次の2つのエラーが発生していますが、他の試みも同様のエラーですが、正確ではありません。メソッドの
'System.Collections.Generic.Dictionary <のint、int型[]>' にタイプ 'System.Collections.Generic.Dictionary <処理鍵、Sqor.Database.DbEntityManagerRoleAssignment>' に変換できません。エラー11型引数のSystem.Linq.Enumerable.ToDictionary < TSOURCE、TKEY>(System.Collections.Generic.IEnumerable、System.Func < TSOURCE、TKEY>、System.Collections.Generic。 IEqualityComparer < TKey>) 'を使用から推測することはできません。型引数を明示的に指定してみてください。
エラー12は、暗黙的に
UPDATE - あなたはエンティティIDによってグループ化すると、アレイに関連する役割IDをプロジェクトのような作業溶液(スタンレーを@Dのおかげで)
public static Dictionary<int,int[]> GetEntityAuthorizations(int userId)
{
using (SqorDb db = new SqorDb())
{
var query = db.EntityManagerRoleAssignments.Where(x => x.EntityManager.ManagerId == userId);
var entityGroups = query.GroupBy(x => x.EntityManager.EntityId);
var result = entityGroups.ToDictionary(e => e.Key,
g => g.Select(x => x.RoleId).ToArray()
);
return result;
}
}
これは現在実行していることと、何をしたいのですか? – Adam
なぜ1組の辞書が必要ですか?このメソッドは1つのユーザーIDを取り、この辞書には複数のkeyvalueペアが含まれないようにします。 'int []'を返すようにしてください。 –
あなたの権利、私は私のコードを編集して、私が後に何を表示するかを... – haltandcode