stackoverflow に関する別の質問で、タイプ T のエンティティの主キー VALUE を次のように見つけることができることがわかりました
x=> x.EntityKey.EntityKeyValues[0].Value
IQueryable < T > q があります
ここで TModel : EntityObject,new()
すべての主キーのリストを取得したい。
List<int> primarykeyvalues = q.Select(x => (int)x.EntityKey.EntityKeyValues[0].Value).ToList()
ArrayIndex は LINQ to Entities ではサポートされていません
これは本質的に次のようにする必要があります
List<int> primarykeyvalues = DB.Products.Select(x=>x.Id).ToList()
(しかしその後はジェネリック)
(これは非複合キー専用であることは認識していますが、私の場合は関係ありません)
EntityKeyValues の配列インデクサーを認識しない linq-to-entities を回避する方法はありますか?
解決策は一般的である必要があり、魔法の文字列の「Id」などに依存したくありません。これらすべての主キー値を取得するための完全な代替方法は、もちろん常に歓迎されます。