linq 将文字表示的月份与数字表示的日期进行比较以获得数据

vwoqyblh  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(137)
[HttpGet]
    public HttpResponseMessage Date(String date)
    {
        try
        {
            var users = db.Complains.Where(u => u.Date ==date ).ToList();
            return Request.CreateResponse(HttpStatusCode.OK, users);
        }
        catch (Exception ex)
        {
            return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
        }
    }


在上面的代码中,我以yyy-mm-dd格式输入日期,但我的要求是以(一月,二月)格式从用户那里获得月份,并只显示该月份的数据。

pb3s4cty

pb3s4cty1#

算法:-
1.首先更改参数“month”的名称。
1.如果参数值不在字符串中的月份列表中,则进行验证。为此,可以创建枚举。
1.设置1、2...12个值或枚举,并在linq中比较该值以获得所需输出

enum MonthsEnum { Jan=1, Feb=2, Mar=3, Apr=4, May=5, Jun=6, Jul=7, Aug=8, Sep=9, Oct=10, Nov=11, Dec=12 }

[HttpGet]
public HttpResponseMessage Date(String month)
{
    try
    {
        //Convert month in enum;
         Enum.TryParse(month, out MonthsEnum givenMonth);

        if (givenMonth == 0)
          throw new Exception("Invalid Month");

        // if u.Date is date
        var users = db.Complains.Where(u => DateTime.Parse(u.Date).Month == (int)givenMonth).ToList();

       return Request.CreateResponse(HttpStatusCode.OK, users);
    }
    catch (Exception ex)
    {
        return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
    }
}

Use date format or culture info in date parse if needed
看它会不会起作用

相关问题