Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ,仅选择其引用存在于IQueryable中的记录<;类别>;列表_C#_Linq_Entity Framework 6_Iqueryable - Fatal编程技术网

C# LINQ,仅选择其引用存在于IQueryable中的记录<;类别>;列表

C# LINQ,仅选择其引用存在于IQueryable中的记录<;类别>;列表,c#,linq,entity-framework-6,iqueryable,C#,Linq,Entity Framework 6,Iqueryable,我需要使用LINQ查询在IQueryable中选择FES_UNIT_INSTANCE_代码所在的所有记录。我是活动课程实例代码中的可读取列表,但在第二次LINQ查询中出错 public IList<ActiveUnitInstancesViewModel> GetActiveUnitInstances() { IList<ActiveUnitInstancesViewModel> _ActiveUnitInstances = null;

我需要使用LINQ查询在IQueryable中选择FES_UNIT_INSTANCE_代码所在的所有记录。我是活动课程实例代码中的可读取列表,但在第二次LINQ查询中出错

 public IList<ActiveUnitInstancesViewModel> GetActiveUnitInstances()
    {
        IList<ActiveUnitInstancesViewModel> _ActiveUnitInstances = null;

        using (var _uow = new FES_UOF())
        {
            IQueryable<UnitInstanceOccurrencesEntity> ACTIVE_COURSE_INSTANCE_CODES =                    
                    from UIO in _uow.UnitInstanceOccurrencesRepository.GetAll()
                    where UIO.STATUS != "WITHDRAWN" && UIO.STATUS != "INACTIVE"
                    group UIO by new { UIO.FES_UINS_INSTANCE_CODE, UIO.OWNING_ORGANISATION } into grp
                    select new UnitInstanceOccurrencesEntity {FES_UINS_INSTANCE_CODE = grp.Key.FES_UINS_INSTANCE_CODE, OWNING_ORGANISATION = grp.Key.OWNING_ORGANISATION};


           var query = (from unitInstance in _uow.UnitInstancesRepository.GetAll().
                                 Where(x => ACTIVE_COURSE_INSTANCE_CODES.Contains<UnitInstanceOccurrencesEntity>( x.FES_UNIT_INSTANCE_CODE ))
                         select new ActiveUnitInstancesViewModel
                         {
                             UnitInstances = unitInstance

                         }).
                         ToList();

        }

SQL脚本 错误2:

例外情况
System.NotSupportedException未由用户代码处理
HResult=-2146233067
Message=无法将类型“System.Linq.IOrderedQueryable`1[[App.Entities.UnitInstanceOccurrences,App.Entities,Version=1.0.0,Culture=neutral,PublicKeyToken=null]]”强制转换为“System.Data.Entity.Core.Objects.ObjectQuery`1[[App.Entities.UnitInstanceOccurrences,App.Entities,Version=1.0.0.0.0,Culture=neutral,PublicKeyToken=null]]”。LINQ to实体仅支持强制转换EDM基元或枚举类型。
Source=EntityFramework
堆栈跟踪:
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.ValidateAndJustCastTypes(TypeUsage-toType、TypeUsage-fromType、TypeToClrType、TypeFromClrType)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.GetCastTargetType(TypeUsage fromType、Type toClrType、Type fromClrType、Boolean preserveCastForDateTime)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.CreateCastExpression(DbExpression源,类型toClrType,类型fromClrType)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.ConvertTranslator.TranslateNuary(ExpressionConverter父级、一元表达式一元、DbExpression操作数)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.UnaryTranslator.TypedTranslate(ExpressionConverter父级,UnaryExpression linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter父级,Expression linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级、MethodCallExpression调用、DbExpression和source、DbExpressionBinding和sourceBinding、DbExpression和lambda)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.SelectTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用,SequenceMethod SequenceMethod)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter父级,MethodCallExpression linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter父级,Expression linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.ContainesTranslator.TranslateContains(ExpressionConverter父级、Expression sourceExpression、Expression valueExpression)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.ContainesTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用,SequenceMethod SequenceMethod)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter父级,MethodCallExpression linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter父级,Expression linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
位于System.Data.Entity.Core.Objects.eliq.ExpressionConverter.TranslateLambda(LambdaExpression lambda,DbExpression input)
位于System.Data.Entity.Core.Objects.eliq.ExpressionConverter.TranslateLambda(LambdaExpression lambda、DbExpression input、DbExpressionBinding&binding)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级、MethodCallExpression调用、DbExpression和source、DbExpressionBinding和sourceBinding、DbExpression和lambda)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用,SequenceMethod SequenceMethod)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter父级,MethodCallExpression linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter父级,Expression linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级、MethodCallExpression调用、DbExpression和source、DbExpressionBinding和sourceBinding、DbExpression和lambda)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.SelectTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用,SequenceMethod SequenceMethod)
位于System.Data.Entity.Core.Objects.Elink.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter父级,MethodCallExpression linq)
位于System.Data.Entity.Core.Objects.elink.Ex
public class ActiveUnitInstancesViewModel
{
    public UnitInstancesEntity UnitInstances { get; set; }

    public UnitInstanceOccurrencesEntity UnitInstanceOccurrences { get; set; }

    public VerifierEntity Verifiers { get; set; }

    public OrganisationUnitEntity OrganisationUnits { get; set; }
}
WHERE UNIT_INSTANCES.FES_UNIT_INSTANCE_CODE IN
           (SELECT ACTIVE_COURSE_INSTANCE_CODES.FES_UINS_INSTANCE_CODE
              FROM ACTIVE_COURSE_INSTANCE_CODES);
 System.NotSupportedException was unhandled by user code
HResult=-2146233067
Message=Unable to cast the type  'System.Linq.IOrderedQueryable`1[[App.Entities.UnitInstanceOccurrences,  App.Entities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' to type  'System.Data.Entity.Core.Objects.ObjectQuery`1[[App.Entities.UnitInstanceOccurre nces, App.Entities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. LINQ to Entities only supports casting EDM primitive or enumeration types.
Source=EntityFramework
StackTrace:
   at  System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.ValidateAndAdjustCastTypes(TypeUsage toType, TypeUsage fromType, Type toClrType, Type fromClrType)
   at  System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.GetCastTargetType(TypeUsage fromType, Type toClrType, Type fromClrType, Boolean preserveCastForDateTime)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.CreateCastExpression(DbExpression source, Type toClrType, Type fromClrType)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.ConvertTranslator.TranslateUnary(ExpressionConverter parent, UnaryExpression unary, DbExpression operand)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.UnaryTranslator.TypedTranslate(ExpressionConverter parent, UnaryExpression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.ContainsTranslator.TranslateContains(ExpressionConverter parent, Expression sourceExpression, Expression valueExpression)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.ContainsTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda)
   at  System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
   at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.Convert()
   at System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClassb.<GetResults>b__a()
   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClassb.<GetResults>b__9()
   at System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at System.Lazy`1.get_Value()
   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at App.EBSMiddleware.Engine.CurriculumServices.GetActiveUnitInstances() in  C:\MyDevelopment\EBSMiddlewareApplication\App.EBSMiddlewareServices\Services\Curriculum Mangement\ActiveUnitInstances.cs:line 80
   at ManagementConsole.MainWindow..ctor() in C:\MyDevelopment\EBSMiddlewareApplication\ManagementConsole\MainWindow.xaml.cs:line 128
 IQueryable<UnitInstanceOccurrences> ACTIVE_COURSE_INSTANCE_CODES =
                     (from UIO in _uow.UnitInstanceOccurrencesRepository.GetAll()
                     where UIO.STATUS != "WITHDRAWN" && UIO.STATUS != "INACTIVE"
                     group UIO by new { UIO.FES_UINS_INSTANCE_CODE , UIO.OWNING_ORGANISATION } into grp
                     select new UnitInstanceOccurrences { FES_UINS_INSTANCE_CODE = grp.Key.FES_UINS_INSTANCE_CODE, OWNING_ORGANISATION = grp.Key.OWNING_ORGANISATION })
                     .Distinct()
                     .OrderBy(o => o.FES_UINS_INSTANCE_CODE);

            var d = ACTIVE_COURSE_INSTANCE_CODES.Select(code => code.FES_UINS_INSTANCE_CODE).ToList();

            var d2 = ACTIVE_COURSE_INSTANCE_CODES.Select(code => code.FES_UINS_INSTANCE_CODE).Contains("IH5MD019");
x => ACTIVE_COURSE_INSTANCE_CODES
    .Select(code => code.FES_UINS_INSTANCE_CODE)
    .Contains(x.FES_UNIT_INSTANCE_CODE)