我需要根据一些条件生成一个完整的月报告。第一个条件是-我从用户那里取一个匿名日期,在检查所有条件后,它将生成完整的月报告。
我试图生成报告,但这是返回一个天明智的报告。一切都很好,除了月份。请帮助我这样做。
[HttpGet("inner-join/{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public IActionResult GetReport(DateTime id)
{
try
{
IEnumerable<BTBPending> objBTBPendingList = _unitOfWork.BTBPending.GetAll(includeProperties: "ProformaInvoice,ContractList,SupplierList,CountryList,ItemList,BuyerList,StyleList,TradeTermList,ErpRemarksList,StatusList,LcNoList,UdAmendList");
IEnumerable<ProformaInvoice> objProformaInvoiceList = _unitOfWork.ProformaInvoice.GetAll(includeProperties: "ActualContract,ContractList,SupplierList,CountryList,ItemList,BuyerList,StyleList,TradeTermList");
var query = objBTBPendingList
.Where(x => x.LcOpenDate == id)
.Where(x => x.CountryListId == 26)
.Where(x => x.StatusListId == 12 || x.StatusListId == 13 || x.StatusListId == 14)
.Join(objProformaInvoiceList,
btbPending => btbPending.ContractListId,
pi => pi.ContractListId,
(btbPending, pi) => new
{
LcNo = btbPending.LcNoList,
Value = btbPending.PiValue,
ContractNo = pi.ContractList,
Buyer = pi.BuyerList,
PiNo = pi.PINo,
Supplier = pi.SupplierList,
Item = pi.ItemList
}).ToList();
return Ok(query);
}
catch (Exception ex)
{
return StatusCode(500, "Internal Server Error, Please Try Again Leter!");
}
}
2条答案
按热度按时间hjqgdpho1#
你必须为这个月做条件,你正在做的日期。所以这样做。
这里我假设
id
和LcOpenDate
来自相同的时区。根据注解,
LcOpenDate
是DateTime?
,因此您需要这样做。LcOpenDate.Value.Month
和LcOpenDate.Value.Year
mbskvtky2#
DateTime
提供完整的日期和时间,类似于当你在数据库中存储数据的时候,你可能会忽略时间,比如:
这是
x.LcOpenDate == id
的唯一工作方式。否则它只会返回打开日期与您提供的时间精确到毫秒的项目。请尝试以下操作:此外,如果您使用的是.net 6+,则可以使用DateOnly和TimeOnly