Type <t>的表达式不是序列错误,LinqPad </t>

时间:2013-06-06 11:43:28

标签: c# linq linqpad

我广泛使用Linqpad来查询数据库。今天,在两个结果集之间进行联合操作时出现以下错误。

  

表达式   'System.Linq.IQueryable 1[<>f__AnonymousType4 3 [System.Int64,System.String]]'   不是序列

以下是我所做的一系列步骤。

我使用的是Oracle数据库,并使用IQToolkit在LinqPad中添加了连接。 我有2个表几乎相似的表。

Table1
Field1 int
Field2 long
Field3 string

Table2
Field2 long
Field3 string

除了'Field1'字段外,table2在结构上与Table1相似。 我想在两个表中加入数据。

var firstTableData = (from data in Table1
                      select new{Field2 = data.Feild2, Field3 = data.Field3});

var secondTableData = (from data in Table2
                       select new{Field2 = data.Field2,Field3 = data.Field3});

var combined = firstTableData.Union(secondTableData);

combined.Dump();

此时,Dump显示两个表中的组合数据。

现在,当我在联接中使用此组合数据时,会使用其他查询,例如

var newData = (from t3 in Table3
               join c1 in combined on t3.Field2 equals c1.Field2
               select {...});

在上面的查询中,我遇到了问题

The expression of type 'System.Linq.IQueryable`1[<>f__AnonymousType4`3[System.Int64,System.String]]' is not a sequence

我尝试过调用combined.AsQueryable(),combined.AsEnumerable()并尝试使用'Concat'代替'Union'进行组合。

var combined = firstTableData.Concat(secondTableData);

似乎没什么用。

我错过了什么。 它让我想知道Dump()方法没有任何这样的抱怨。 如果您需要更多信息,请与我们联系。

堆栈追踪:

 at IQToolkit.Data.Common.QueryBinder.ConvertToSequence(Expression expr)
   at IQToolkit.Data.Common.QueryBinder.VisitSequence(Expression source)
   at IQToolkit.Data.Common.QueryBinder.BindJoin(Type resultType, Expression outerSource, Expression innerSource, LambdaExpression outerKey, LambdaExpression innerKey, LambdaExpression resultSelector)
   at IQToolkit.Data.Common.QueryBinder.VisitMethodCall(MethodCallExpression m)
   at IQToolkit.ExpressionVisitor.Visit(Expression exp)
   at IQToolkit.Data.Common.DbExpressionVisitor.Visit(Expression exp)
   at IQToolkit.Data.Common.QueryBinder.VisitSequence(Expression source)
   at IQToolkit.Data.Common.QueryBinder.BindJoin(Type resultType, Expression outerSource, Expression innerSource, LambdaExpression outerKey, LambdaExpression innerKey, LambdaExpression resultSelector)
   at IQToolkit.Data.Common.QueryBinder.VisitMethodCall(MethodCallExpression m)
   at IQToolkit.ExpressionVisitor.Visit(Expression exp)
   at IQToolkit.Data.Common.DbExpressionVisitor.Visit(Expression exp)
   at IQToolkit.Data.Common.QueryBinder.VisitSequence(Expression source)
   at IQToolkit.Data.Common.QueryBinder.BindWhere(Type resultType, Expression source, LambdaExpression predicate)
   at IQToolkit.Data.Common.QueryBinder.VisitMethodCall(MethodCallExpression m)
   at IQToolkit.ExpressionVisitor.Visit(Expression exp)
   at IQToolkit.Data.Common.DbExpressionVisitor.Visit(Expression exp)
   at IQToolkit.Data.Common.QueryBinder.VisitSequence(Expression source)
   at IQToolkit.Data.Common.QueryBinder.BindSelect(Type resultType, Expression source, LambdaExpression selector)
   at IQToolkit.Data.Common.QueryBinder.VisitMethodCall(MethodCallExpression m)
   at IQToolkit.ExpressionVisitor.Visit(Expression exp)
   at IQToolkit.Data.Common.DbExpressionVisitor.Visit(Expression exp)
   at IQToolkit.Data.Common.QueryBinder.Visit(Expression exp)
   at IQToolkit.Data.Common.QueryBinder.Bind(QueryMapper mapper, Expression expression)
   at IQToolkit.Data.Common.QueryMapper.Translate(Expression expression)
   at IQToolkit.Data.Common.QueryTranslator.Translate(Expression expression)
   at IQToolkit.Data.EntityProvider.GetExecutionPlan(Expression expression)
   at IQToolkit.Data.EntityProvider.Execute(Expression expression)
   at IQToolkit.Data.EntitySession.SessionProvider.Execute(Expression expression)
   at IQToolkit.Query`1.System.Collections.IEnumerable.GetEnumerator()

谢谢, 萨蒂什南比亚

0 个答案:

没有答案