2016-05-16 10 views
0

これは、次のlinqクエリをコンパイルするとエラーが発生しているようです。私はいくつかの似たような問題を読んでいましたが、すべて.Contains()の代わりに.Any()関数を使うことに重点を置いていましたが、それにもかかわらず、文をコンパイルする際にエラーが発生し、例外が記録されています。System.NotSupportedException:type_.Onlyプリミティブの定数値を作成できません...このコンテキスト

これは、ステートメントである: -

int result=0; 
result = (from u in objContext.CLG_challengeMaster 
      where u.appId == applicationId 
      && objContext.CLG_taskDetail.Any(e => e.challengeId == u.id) 
      && !objContext.CLG_challengeDetail.Any(e => e.challengeId == u.id && (e.userId == null && e.groupId == null && e.appGroupId == null && e.roleId == null)) 
      select u).Count(); 

これは、エラーログです:

Message: System.NotSupportedException: Unable to create a constant value of type 'DataAccess.Entities.Models.CLG_taskDetail'. Only primitive types or enumeration types are supported in this context. 
    at System.Data.Objects.ELinq.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter parent, ConstantExpression linq) 
    at System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) 
    at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) 
    at System.Data.Objects.ELinq.ExpressionConverter.NewArrayInitTranslator.<>c__DisplayClass0.<TypedTranslate>b__1(Expression e) 
    at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 
    at System.Data.Common.CommandTrees.ExpressionBuilder.Internal.EnumerableValidator`3.Validate(IEnumerable`1 argument, String argumentName, Int32 expectedElementCount, Boolean allowEmpty, Func`3 map, Func`2 collect, Func`3 deriveName) 
    at System.Data.Common.CommandTrees.ExpressionBuilder.Internal.EnumerableValidator`3.Validate()......... 

誰でもplzは助けることができます。この行の

+0

は最終的にそれを破ると、それを再構築しなければならなかった「どこ」を使用してのように変更します。 ( –

答えて

0

&& objContext.CLG_taskDetail.Any(e => e.challengeId == u.id) CLG_taskDetailがnullになることができれば、その後する行を変更します。

&& (objContext.CLG_taskDetail.Any() && objContext.CLG_taskDetail.Where(e => e.challengeId == u.id)) 

そうでない句

+0

いや、それは動作しませんコンパイルエラーを言って:重大\tコード\t説明\tプロジェクト\tファイル\tライン エラー\t CS0019 \t演算子「&&」Cを'bool'と 'IQueryable 'のオペランドにアノテーションを適用する –

+0

上記の問題は、あなたがテーブルに加わっていないと思うので、以下を試してみてください。 'objContext.CLG_challengeMaster.Where(u => u.appId == applicationId && u.CLG_taskDetail.Any(e => e.ChallengeId == u.id)&&!u.CLG_challengeDetail.Any(f => f.challengeid = ==== && f.userId == null && f.groupId == null && f.appGroupId == null && f.roleId == null))。count(); 'あなたはこれを選択する必要はないと思います – bilpor

関連する問題