繁体   English   中英

在 C# 实体框架中查询分组依据并转换日期?

[英]Query group by and convert date in C# Entity Framework?

// GET api/PdoGreige/ReportByBuffer
[HttpGet, ActionName("Buffer")]
public async Task<HttpResponseMessage>Get_Buffer()
{     
    var result = (from t1 in db.INVN_PROD_MOVEMENT_LOG
                  join t2 in db.INVN_PROD_PDO_ITEM on t1.PDO_ITEM_ID equals t2.PDO_ITEM_ID
                  join t4 in db.INVN_PROD_PDO_GREIGE on t2.PDO_ITEM_ID equals t4.PDO_ITEM_ID
                  join t3 in db.INVN_PROD_RM_GREIGE on t4.GREIGE_ID equals t3.GREIGE_ID

                  //where t3.GREIGE_ID != null
                  //where t3.WEIGHT_REMAIN != null
                  //where t3.ITEM_NAME != null
                
                  where t1.WORKCENTER == "O.DRY"
                  orderby t1.UPDATE_TIME descending
                  
                  select new
                  {
                      UPDATE_TIME = t1 == null ? DateTime.Now : t1.UPDATE_TIME,
                      t3.GREIGE_ID,
                      t3.ITEM_NAME,
                      t3.WEIGHT_REMAIN,
                      t3.COMMENTS,
                      t1.WORKCENTER,
                  }).Distinct();

    return Request.CreateResponse(
        HttpStatusCode.OK,
        await result.ToListAsync(),
        Configuration.Formatters.JsonFormatter
    );
}

这是我的 C# 查询。 如果我想将格式日期转换为 C# 中的 ("dd/MM/yyy") 并将其分组。 就像我在 SQL Server 中的查询一样,我尝试了很多语法但没有用。 帮我解决

我认为日期格式 105(不是 dd/MM/yyyy,而是 dd-MM-yyyy)并没有那么重要,而是它剥离了任何时间方面,因此分组是全天级别

在 c# 中,等效项是

UPDATE_TIME = t1 == null ? DateTime.Today : t1.UPDATE_TIME.Date

它通过将时间设置为午夜来“删除”时间方面(阻止它细分分组),但更有用的是将日期保留为日期而不是将其放入字符串; 它可以被格式化为更接近用户界面的用户文化中的字符串

如果你真的想要它作为一个字符串:

UPDATE_TIME = (t1 == null ? DateTime.Now : t1.UPDATE_TIME).ToString("dd/MM/yyyy")

(或如 105,使用连字符代替斜线)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM