c# - EXISTS 不引入子查询时,select 列表中只能指定一个表达式

标签 c# .net sql linq

这个 LINQ 语句有什么问题:

(from deposit in DAOBase<CashBookDeposit, long>.GetIQueryableBusinessBase()
 where deposit.Id == id
 select new CashBookDeposit
 {
     Id = deposit.Id,

     DepositeNumber = deposit.DepositeNumber,
     DocumentTypeName = deposit.CashBookDepositDocumentType.EnglishName,
     StatusName = deposit.CashBookDepositeStatus.EnglishName,

     CashbookName = deposit.CashBook.EnglishName,
     Collector = deposit.Collector,
     Partner = deposit.Partner,
     CashBookDepositDocumentType = deposit.CashBookDepositDocumentType,
     CreationDate = deposit.CreationDate,

     PaidAmount = deposit.TotalAmount,
     Description = deposit.Description,

     TempReceipts = (from receipt in deposit.TempReceipts 
                     select new TempReceipt
                     {
                         Id = receipt.Id,
                         Code = receipt.Code,
                         ReceiptNo = receipt.ReceiptNo,
                         Amount = receipt.Amount,
                         BusinessPartnerName = receipt.Partner.ENName,
                         CollectorName = receipt.Collector.EnglishName,
                         StatusName = receipt.TempReceiptStatus.EnglishName,
                         CollectionDate = receipt.CollectionDate,
                         CreationDate = receipt.CreationDate,
                         Description = receipt.Description,
                     }).ToList()
 }).SingleOrDefault();

我遇到了这个异常:

不使用EXISTS引入子查询时,select列表中只能指定一个表达式。

需要帮助,谢谢

最佳答案

您可以按如下方式更改查询:

(from deposit in DAOBase<CashBookDeposit, long>.GetIQueryableBusinessBase()
 let receipts = (from tempReceipts in deposit.TempReceipts
                 select tempReceipts)
 where deposit.Id == id
 select new CashBookDeposit
 {
     Id = deposit.Id,

     DepositeNumber = deposit.DepositeNumber,
     DocumentTypeName = deposit.CashBookDepositDocumentType.EnglishName,
     StatusName = deposit.CashBookDepositeStatus.EnglishName,

     CashbookName = deposit.CashBook.EnglishName,
     Collector = deposit.Collector,
     Partner = deposit.Partner,
     CashBookDepositDocumentType = deposit.CashBookDepositDocumentType,
     CreationDate = deposit.CreationDate,

     PaidAmount = deposit.TotalAmount,
     Description = deposit.Description,

     TempReceipts = (from receipt in receipts 
                     select new TempReceipt
                     {
                         Id = receipt.Id,
                         Code = receipt.Code,
                         ReceiptNo = receipt.ReceiptNo,
                         Amount = receipt.Amount,
                         BusinessPartnerName = receipt.Partner.ENName,
                         CollectorName = receipt.Collector.EnglishName,
                         StatusName = receipt.TempReceiptStatus.EnglishName,
                         CollectionDate = receipt.CollectionDate,
                         CreationDate = receipt.CreationDate,
                         Description = receipt.Description,
                     }).ToList()
 }).SingleOrDefault();

关于c# - EXISTS 不引入子查询时,select 列表中只能指定一个表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5936206/

相关文章:

mysql - 选择仅具有所需角色的用户

c# - 如何设置表单可见区域的大小,减去标题和边框?

c# - 使用 C# 在窗体窗口中显示来自本地资源的图标

sql - 如何根据连接属性的最接近值左连接两个表?

c# - 验证字符串 - 仅特定语言字符

c# - Azure:将控制台 application.exe.config(从 app.config 生成)复制到 Azure 包

sql - 如何为非生产环境获取 postgresql 数据库的部分转储?

c# - 什么构成了昂贵的方法或资源?

c# - C#中的文件解析

C# 更新 mySQLDateTime 数据表