首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在LINQ中搜索日期后获得完整的月报表

在LINQ中搜索日期后获得完整的月报表
EN

Stack Overflow用户
提问于 2022-11-12 04:40:15
回答 2查看 63关注 0票数 0

我需要根据一些标准生成一个完整的月报告。第一个条件是-我从用户那里获取一个匿名词Date,在检查所有条件之后,它将生成完整的月份报告。

我试图生成报告,但这是返回一天明智的报告。除了这个月,一切都很好。请帮我做这个。

代码语言:javascript
复制
[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!");
   }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-12 04:47:04

你必须为这个月设定条件,你要在日期上做。所以就像这样吧。

代码语言:javascript
复制
.Where(x => x.LcOpenDate.Month == id.Month && x.LcOpenDate.Year == id.Year)

这里我假设idLcOpenDate都来自相同的时区。

根据注释,LcOpenDateDateTime?,所以您需要这样做。

LcOpenDate.Value.MonthLcOpenDate.Value.Year

票数 1
EN

Stack Overflow用户

发布于 2022-11-12 04:50:05

DateTime给出了完整的日期和时间,并且看起来类似于

代码语言:javascript
复制
2022-11-11 11:44:53 PM

可能发生的情况是,当您将数据存储在数据库中时,您将占用时间。就像这样:

代码语言:javascript
复制
var date = new DateTime(now.Year, now.Month, now.Day) 
// 2022-11-11 12:00:00 AM

这是x.LcOpenDate == id唯一的工作方式。否则,它将只返回与打开日期在您提供的准确时间至毫秒的项目。试一试:

代码语言:javascript
复制
.Where(x => x.LcOpenDate.Year == id.Year &&  x.LcOpenDate.Month == id.Month)

此外,如果您在.net 6+上,则可以使用DateOnlyTimeOnly

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74410414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档