通常、この問題は、Where ステートメントに指定された式からの型推定の失敗によって発生します。上記のコメントで述べたように、ラムダの代入演算子int
が a ではなくan を返すことが100%原因bool
です。
明確にするために - あなたが持っている場所
var result = db.Set.Where(x => x.Id = num).Select(whatever);
あなたが持っている必要があります
var result = db.Set.Where(x => x.Id == num).Select(whatever);
これのもう1つの良い(そしてより一般的な)例は、次のようなものです
public class Elem
{
public bool IsSomething {get;set;}
public bool? IsSomethingElse {get;set;}
}
次に、一見非常に合理的に見える次のクエリを実行すると、「あいまいな呼び出し」というやや不可解なエラーでコンパイルに失敗します。
IQueryable<Elem> queryable = GetQueryable();
var result = queryable.Where(e => e.IsSomething && e.IsSomethingElse).ToList();
このステートメントをラムダ内に記述していない場合は、より意味のあるエラーが発生します。
「型 'System.Nullable<bool>' および 'bool' のオペランドに演算子 '&&' を適用できません」
ブール値を返せていないことがすぐにわかります。