C#,MVC,EnityFramework,如何处理数据

C#,MVC,EnityFramework,如何处理数据,c#,json,asp.net-mvc,string,C#,Json,Asp.net Mvc,String,我有这些数据 我想把天转换成英语值 例如: “星期六” “星期日” 此代码: [HttpGet] public JsonResult GetTime() { var data = _db.CourseTimes .GroupBy(c => c.Day) .ToDictionary(g => g.Key, v => v.Select(c => new { start = TimeSpan.FromHours(c.Sta

我有这些数据

我想把天转换成英语值 例如: “星期六” “星期日”

此代码:

 [HttpGet]
    public JsonResult GetTime()
    {
        var data = _db.CourseTimes
     .GroupBy(c => c.Day)
     .ToDictionary(g => g.Key, v => v.Select(c => new { start = TimeSpan.FromHours(c.StartTime)
     .ToString("hh':'mm"), stop = TimeSpan.FromHours(c.EndTime).ToString("hh':'mm") }));

        return Json(data, JsonRequestBehavior.AllowGet);
    }
退回这个:

{"الاحد":[{"start":"01:00","stop":"02:00"},{"start":"01:00","stop":"02:00"},{"start":"14:00","stop":"20:00"}],"السبت":[{"start":"01:00","stop":"02:00"},{"start":"05:00","stop":"08:00"},{"start":"07:00","stop":"06:00"}]}
我想让它退回这个:


尝试使用
CultureInfo
,或者您必须将单词映射到表或静态列表中,并比较该单词…

尝试使用
CultureInfo
,或者您必须将单词映射到表或静态列表中,并比较该单词…

好的,下面是一个实现方法:

[HttpGet]
public JsonResult GetTime()
{
    var english_names = (new CultureInfo("en-US")).DateTimeFormat.DayNames
        .Select((v, i) => new { Key = i, Value = v })
        .ToDictionary(o => o.Key, o => o.Value);

    var arabic_names = (new CultureInfo("ar-EG")).DateTimeFormat.DayNames
        .Select((v, i) => new { Key = i, Value = v })
        .ToDictionary(o => o.Key, o => o.Value);

    var data = _db.CourseTimes
        .GroupBy(c => c.Day)
        .ToDictionary(g => english_names.FirstOrDefault(p => p.Key == arabic_names.FirstOrDefault(a => a.Value == g.Key).Key).Value, v => v.Select(c => new
        {
            start = TimeSpan.FromHours(c.StartTime).ToString("hh':'mm"),
            stop = TimeSpan.FromHours(c.EndTime).ToString("hh':'mm")
        }).ToList());

    return Json(data, JsonRequestBehavior.AllowGet);
}

基本上,您只需要为每种语言创建两个名称列表,并获取阿拉伯语名称的英文索引,该索引位于第二个列表中。

好的,下面是一个实现方法:

[HttpGet]
public JsonResult GetTime()
{
    var english_names = (new CultureInfo("en-US")).DateTimeFormat.DayNames
        .Select((v, i) => new { Key = i, Value = v })
        .ToDictionary(o => o.Key, o => o.Value);

    var arabic_names = (new CultureInfo("ar-EG")).DateTimeFormat.DayNames
        .Select((v, i) => new { Key = i, Value = v })
        .ToDictionary(o => o.Key, o => o.Value);

    var data = _db.CourseTimes
        .GroupBy(c => c.Day)
        .ToDictionary(g => english_names.FirstOrDefault(p => p.Key == arabic_names.FirstOrDefault(a => a.Value == g.Key).Key).Value, v => v.Select(c => new
        {
            start = TimeSpan.FromHours(c.StartTime).ToString("hh':'mm"),
            stop = TimeSpan.FromHours(c.EndTime).ToString("hh':'mm")
        }).ToList());

    return Json(data, JsonRequestBehavior.AllowGet);
}
基本上,您只需要为每种语言创建两个名称列表,并获得阿拉伯语名称的英文索引,该索引位于第二个列表中