1

これらの 2 つの DataTablescustomerTableDTcustomerAliasesTableDT. これらは両方とも、次のようなデータベースから取り込まれます。

customerTableDT = UtilityDataAndFunctions.PerformDBReadTransactionDataTableFormat(String.Format("SELECT * FROM {0}", TableNames.customers));

customerAliasesTableDT = UtilityDataAndFunctions.PerformDBReadTransactionDataTableFormat(String.Format("SELECT * FROM {0}", TableNames.customerAliases));

今、次のように 2 つのデータテーブルで内部結合を実行しようとしています。

var customerNames = from customers in customerTableDT.AsEnumerable()
                    join aliases in customerAliasesTableDT.AsEnumerable on customers.Field<int>("CustomerID") equals aliases.Field<int>("CustomerID")
                    where aliases.Field<string>("Alias").Contains(iString) select customers.Field<string>("Name")

しかし、それは私にこのエラーを与えます:

The type of one of the expressions in the join clause is incorrect.  Type inference failed in the call to 'Join'.

私がやろうとしていることについてSQLで書かなければならなかった場合、それは非常に簡単です:

SELECT * FROM CUSTOMERS C
INNER JOIN CustomerAliases ALIASES ON ALIASES.CustomerID = C.CustomerID
WHERE CA.Alias LIKE %STRING_HERE%

助けはありますか?

4

1 に答える 1

5

の後に括弧が抜けAsEnumerableているため、 ではなくメソッド グループとして扱われIEnumerable<DataRow>ます。

var customerNames = from customers in customerTableDT.AsEnumerable()
                    join aliases in customerAliasesTableDT.AsEnumerable() on customers.Field<int>("CustomerID") equals aliases.Field<int>("CustomerID")
                    where aliases.Field<string>("Alias").Contains(iString) select customers.Field<string>("Name")
于 2013-04-27T21:38:03.260 に答える