获取LINQ查询结果的C#问题 - 查询在LINQpad中运行,但在Visual Studio中不运行

时间:2014-01-17 14:27:44

标签: c# linq datagridview

我正在尝试使用以下LINQ查询的结果填充DataGridView但是由于某种原因我打赌错误:

mscorlib.dll中出现未处理的“System.NullReferenceException”类型异常

附加信息:未将对象引用设置为对象的实例。

这是查询:

var QueryAverageTime = 
  from so in tpDB.tblServiceOrders
  join sologs in tpDB.tblSOLogs on so.SONumber equals sologs.SONumber

  where so.DateClosed >= new DateTime(2014, 01, 13)
  where so.DateClosed <= new DateTime(2014, 01, 17)
  where sologs.ElapsedHours != 0 || sologs.ElapsedMinutes != 0

  group new { sologs.ElapsedHours, sologs.ElapsedMinutes } by sologs.SONumber into g
  group new { hours = g.Sum(x => x.ElapsedHours), mins = g.Sum(x => x.ElapsedMinutes) } by "Totals" into t

  select new
  {
     Average = t.Average(x => (x.hours * 60) + x.mins),
     Count = t.Count()
  };
dgvTimeSLAAverage.DataSource = QueryAverageTime.ToList();

== EDIT == 我不确定为什么这个查询在LINQpad中运行正常并返回结果时会出现问题。

我尝试过更改

dgvTimeSLAAverage.DataSource = QueryAverageTime.ToList();

var test = QueryAverageTime.ToList();
然而,

仍然在System.Data.Entity.Core.Query崩溃。

当我删除Group By

时,查询运行正常
group new { hours = g.Sum(x => x.ElapsedHours), mins = g.Sum(x => x.ElapsedMinutes) } by "Totals" into t

这是抛出的异常:

System.NullReferenceException: Object reference not set to an instance of an object.
at System.Data.Entity.Core.Query.PlanCompiler.NominalTypeEliminator.VisitPropertyOp(Op op, Node n, PropertyRef propertyRef, Boolean throwIfMissing)
at System.Data.Entity.Core.Query.PlanCompiler.NominalTypeEliminator.Visit(PropertyOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.PropertyOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitNode(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitDefault(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitScalarOpDefault(ScalarOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.Visit(AggregateOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.AggregateOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitNode(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitDefault(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitAncillaryOpDefault(AncillaryOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.Visit(VarDefOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.VarDefOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitNode(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n)
at System.Data.Entity.Core.Query.PlanCompiler.NominalTypeEliminator.Visit(VarDefListOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.VarDefListOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitNode(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n)
at System.Data.Entity.Core.Query.PlanCompiler.NominalTypeEliminator.Visit(GroupByIntoOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.GroupByIntoOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitNode(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n)
at System.Data.Entity.Core.Query.PlanCompiler.NominalTypeEliminator.Visit(ProjectOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.ProjectOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitNode(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n)
at System.Data.Entity.Core.Query.PlanCompiler.NominalTypeEliminator.Visit(ProjectOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.ProjectOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitNode(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitDefault(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitRelOpDefault(RelOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitApplyOp(ApplyBaseOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.Visit(OuterApplyOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.OuterApplyOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitNode(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitDefault(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitRelOpDefault(RelOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitApplyOp(ApplyBaseOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.Visit(OuterApplyOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.OuterApplyOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitNode(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n)
at System.Data.Entity.Core.Query.PlanCompiler.NominalTypeEliminator.Visit(ProjectOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.ProjectOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfT`1.VisitNode(Node n)
at System.Data.Entity.Core.Query.InternalTrees.BasicOpVisitorOfNode.VisitChildren(Node n)
at System.Data.Entity.Core.Query.PlanCompiler.NominalTypeEliminator.Visit(PhysicalProjectOp op, Node n)
at System.Data.Entity.Core.Query.InternalTrees.PhysicalProjectOp.Accept[TResultType](BasicOpVisitorOfT`1 v, Node n)
at System.Data.Entity.Core.Query.PlanCompiler.NominalTypeEliminator.Process()
at System.Data.Entity.Core.Query.PlanCompiler.NominalTypeEliminator.Process(PlanCompiler compilerState, StructuredTypeInfo structuredTypeInfo, Dictionary`2 tvfResultKeys)
at System.Data.Entity.Core.Query.PlanCompiler.PlanCompiler.Compile(List`1& providerCommands, ColumnMap& resultColumnMap, Int32& columnCount, Set`1& entitySets)
at System.Data.Entity.Core.Query.PlanCompiler.PlanCompiler.Compile(DbCommandTree ctree, List`1& providerCommands, ColumnMap& resultColumnMap, Int32& columnCount, Set`1& entitySets)
at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition..ctor(DbProviderFactory storeProviderFactory, DbCommandTree commandTree, DbInterceptionContext interceptionContext, IDbDependencyResolver resolver, BridgeDataReaderFactory bridgeDataReaderFactory, ColumnMapFactory columnMapFactory)
at System.Data.Entity.Core.EntityClient.Internal.EntityProviderServices.CreateCommandDefinition(DbProviderFactory storeProviderFactory, DbCommandTree commandTree, DbInterceptionContext interceptionContext, IDbDependencyResolver resolver)
at System.Data.Entity.Core.EntityClient.Internal.EntityProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree, DbInterceptionContext interceptionContext)
at System.Data.Entity.Core.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree, DbInterceptionContext interceptionContext)
at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlanFactory.CreateCommandDefinition(ObjectContext context, DbQueryCommandTree tree)
at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlanFactory.Prepare(ObjectContext context, DbQueryCommandTree tree, Type elementType, MergeOption mergeOption, Boolean streaming, Span span, IEnumerable`1 compiledQueryParameters, AliasGenerator aliasGenerator)
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.SqlServer.DefaultSqlExecutionStrategy.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.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at TigerClaw.frmQuery.btnTimePerTicketQuery_Click(Object sender, EventArgs e) in c:\dev\TigerClaw\TigerClaw\frmQuery.cs:line 1866

1 个答案:

答案 0 :(得分:1)

有趣的是,您正在对聚合进行分组。我感觉它在LINQPad中工作,因为它使用LinqToSQL,而Visual Studio使用LinqToEF。 LinqToEF可能还没有适当的翻译,这可能是问题所在。无论如何,这是我最好的猜测。