C# 在匿名对象中格式化集合的日期

C# 在匿名对象中格式化集合的日期,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我得到了一个业务层,它返回一个匿名对象,该对象有一个包含日期的行集合。我想获得日期的区域格式,但我不想将区域设置传递到业务层,而是将格式保留在MVC网站的控制器操作中 业务层: public object GetItems(int catID) { var data = GetDbItems(catId).ToList(); var Items = new { total = data.Count(), page = 1,

我得到了一个业务层,它返回一个匿名对象,该对象有一个包含日期的行集合。我想获得日期的区域格式,但我不想将区域设置传递到业务层,而是将格式保留在MVC网站的控制器操作中

业务层:

public object GetItems(int catID)
{
 var data = GetDbItems(catId).ToList();
 var Items = new 
         {
            total = data.Count(),
            page = 1,
            rows = (from c in data
                    select new {
                       ID = c.id,
                       Desc = c.desc,
                       CreationDate = c.CreationDate
                    })
         };

 return Items;
}
回到控制器的Action方法中,我想格式化匿名类型内集合中的日期。我该怎么做

public JsonResult GetItems(int catID)
{
 string cultureString = HttpContext.Request.UserLanguages.FirstOrDefault();
 DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture(cultureString).DateTimeFormat;
 var items = bizLayer.GetItems(catID);
 var test = from i in items
       select i.rows;  // ????  doesn't know about this collection yet.
 }
我想做的事

获取匿名类型的rows集合,找到date列并使用设置其格式

CreateDate = c.CreateDate.ToString("d", dtfi)

你不能。您需要创建一个与匿名对象具有相同属性的具体类,并传回一个
YourNewClass
,而不是
对象

。您需要创建一个与匿名对象具有相同属性的具体类,并传回一个
YourNewClass
,而不是
对象

我得到了一个返回匿名对象的业务层

这可能是需要修复的第一件事,并用强类型模型替换此匿名对象,这将大大简化此域模型到视图模型的映射,以便执行所需的格式设置

我得到了一个返回匿名对象的业务层


这可能是需要修复的第一件事,并用强类型模型替换此匿名对象,这将大大简化此域模型到视图模型的映射,以便执行所需的格式设置。

为什么业务层返回匿名对象肯定是模糊的,您应该首先修复它。但是如果你不能,最好的办法就是把每个元素解析成一个日期时间;然后对其余行重复使用该信息

为什么业务层返回匿名对象肯定是模糊的,您应该首先解决这个问题。但是如果你不能,最好的办法就是把每个元素解析成一个日期时间;然后对其余行重复使用该信息

业务层返回匿名对象是一个坏主意,使用强类型模型将使您的生活更加轻松。感谢所有回复,我不知道投票选择哪个答案。我现在很清楚,我继承的代码库有一个模糊的SoC。我需要做一个快速修复,但现在看来要做得更好还有很多工作要做。业务层返回匿名对象是个坏主意,使用强类型模型会让你的生活更轻松。感谢所有的回复,我不知道该投哪一个票。我现在很清楚,我继承的代码库有一个模糊的SoC。我需要做一个快速修复,但现在看来要做得更好还有很多工作。如何在控制器操作层中将每个元素解析为DateTime。如何在控制器操作层中将每个元素解析为DateTime。是否有方法使用dynamic关键字或某种类型的强制转换来取消匿名方法的绑定per:是否有一种方法可以使用dynamic关键字或使用某种类型的Cast-as-per取消匿名方法的装箱: