У меня проблема при попытке объединить три табличных данных и поместить их в модель представления.
Вот мой код:
var idSearchJoin = payoutdb.payout_transaction // your starting point - table in the "from" statement
.Join(payoutdb.payout_remittance, // the source table of the inner join
transaction => transaction.transid, // Select the primary key (the first part of the "on" clause in an sql "join" statement)
remit => remit.transid, // Select the foreign key (the second part of the "on" clause)
(transaction, remit) => new TransactionReport() // selection
{
transid = transaction.transid,
senderRefId = transaction.senderRefId,
senderName = transaction.senderName,
senderAddr = transaction.senderAddr,
batchid = transaction.batchid,
requestDate = transaction.requestDate,
benefName = transaction.benefName,
benefacctno = transaction.benefacctno,
amount = remit.amount,
purpose = remit.purpose,
status = transaction.status
})
.Join(payoutdb.payout_bank,
remit => remit.receivingbank,
bank => bank.bankid,
(remit,bank) => new TransactionReport()
{
receivingbank = bank.name
})
.Where(transactremit => transactremit.senderRefId == searchTxt).ToList();
Но этот код выдает ошибку An exception of type 'System.NotSupportedException' occurred in EntityFramework.SqlServer.dll but was not handled in user code
Дополнительная информация The specified type member 'receivingbank' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported
дает мне подсказку о проблеме, но я все еще не могу ее решить,Этот код будет работать только в том случае, если я удалю эту часть кода:
.Join(payoutdb.payout_bank,
remit => remit.receivingbank,
bank => bank.bankid,
(remit,bank) => new TransactionReport()
{
receivingbank = bank.name
})
Но мне нужна эта часть кода, чтобы я смог получить эквивалент receivingbank
из payout_transaction к bankid
в таблице payout_bank.Это мой SQL-код для этой работы:
SELECT a.transid,c.name
FROM payout_transaction a
INNER JOIN
payout_remittance b
ON a.transid = b.transid
INNER JOIN
payout_bank c
ON b.receivingbank = c.bankid
WHERE senderRefId = searchtxt;
Но я не знаю, как это сделать на LINQ Lambda. У вас есть какие-либо предложения или какие-либо обходные пути, как я могу решить эту проблему?