に翻訳することはできません方法がList<int>
を返すときに私がList<int?>
を返すことができなかったのでInt32に変換する。LINQは方法「のInt32 ToInt32(System.Objectの)」メソッドを認識しない、そしてこの方法は、ストア式
この簡単な問題を解決する方法についてのご意見はありますか?これに代えて
に翻訳することはできません方法がList<int>
を返すときに私がList<int?>
を返すことができなかったのでInt32に変換する。LINQは方法「のInt32 ToInt32(System.Objectの)」メソッドを認識しない、そしてこの方法は、ストア式
この簡単な問題を解決する方法についてのご意見はありますか?これに代えて
:
Select(a => Convert.ToInt32(a.RoleId))
これを行う:
Select(a => a.RoleId.Value)
理由は、エラーの説明です。 IQueryableを介してこれらのクエリを実行する場合、セレクタ内で使用されるメソッドは、SQLクエリまたは関数に変換できるものでなければなりません。この場合、Convert.ToInt32()
はそのような方法ではありません。 null
のint
フィールドの場合は、.NET .Value
プロパティを使用しても機能します。
ただし、RoldId
がnull
の場合、これは機能しません。 InvalidOperationException
が表示されます。あなたはバッキングフィールドがnullの場合代わりに設定値を返すようにしたいかもしれません:
Select(a => a.RoleId.HasValue ? a.RoleId.Value : int.MinValue)
1、およびint.MinValue
ない場合がある場合、これは値を返します。
使用この: 選択db.AccountsからListオブジェクトを取得し、ものを行うために(=>(INT)a.RoleId)
これは私のために働いた。 @アンドリューバーバーの答えはしなかった。ありがとう、muthuvel。 – user2330678
これは他人がいないところで働いていました - ありがとう – Lyall
してみてください。 それは私のために働く。
この代わりのpublic List<int> GetRolesForAccountByEmail(string email)
{
var account = db.Accounts.SingleOrDefault(a => a.Email == email);
if (account == null) return new List<int>();
return db.AccountRoles.Where(a => a.AccountId == account.AccountId).Select(a => Convert.ToInt32(a.RoleId)).ToList();
}
、これを試してみてください。..
public List<int> GetRolesForAccountByEmail(string email)
{
var account = db.Accounts.SingleOrDefault(a => a.Email == email);
if (account == null) return new List<int>();
List<AccountRoles> accountRoles= db.AccountRoles.ToList<AccountRoles>();
return accountRoles.Where(a => a.AccountId == account.AccountId).Select(a => Convert.ToInt32(a.RoleId)).ToList();
}
私は 'Convert'機能は、エンティティへのLINQでは動作しないだろうと思い、それはあなたが' db.AccountRulesを行う可能性があります。 AsEnumerable() 'と残りの部分は – V4Vendetta