3

データベースのクエリに Linqpad を広く使用しています。今日、2 つの結果セット間で Union 操作を実行すると、次のエラーが発生しました。

タイプ 'System.Linq.IQueryable 1[<>f__AnonymousType43[System.Int64,System.String]]' の式はシーケンスではありません

以下は、私が行った一連の手順です。

Oracle データベースを使用しており、IQToolkit を使用して LinqPad に接続を追加しました。ほぼ同じ構造のテーブルが 2 つあります。

Table1
Field1 int
Field2 long
Field3 string

Table2
Field2 long
Field3 string

table2 は、「Field1」フィールドを除いて、構造が Table1 と似ています。2 つのテーブルのデータを結合したい。

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() を呼び出してみました。また、combined の「Union」の代わりに「Concat」を試しました。

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()

ありがとう、サティシュ

4

0 に答える 0