错误:方法“ToString”没有重载需要1个参数

时间:2014-01-25 06:09:32

标签: c# linq

我正在尝试按特定顺序格式化日期

Time = DateTime.Parse(p.Time.ToString("dd-MM-yyyy HH:mm:ss"))

Time的数据类型为DateTime

但是我收到了这个错误:

  

方法“ToString”没有重载需要1个参数。

p是我从中得到时间表的对象。

  List<ProductImageMapWrapper> lstpm = new List<ProductImageMapWrapper>();
  lstpm = _db.ProductImageMaps.Where(i => i.ClientId == null && i.BrandId == null).Select(p => new ProductImageMapWrapper
  {
  Time= // Problem here
  }

现在,我尝试以这种方式使用它

Time = DateTime.Parse(string.Format("{dd-MM-yyyy HH:mm:ss}", p.Time))

然后我收到了这个错误:

  

LINQ to Entities无法识别方法System.DateTime Parse(System.String)方法,并且此方法无法转换为商店表达式。

7 个答案:

答案 0 :(得分:2)

String Time = Convert.ToDateTime(p.Time).ToString("dd-MM-yyyy HH:mm:ss");

答案 1 :(得分:1)

括号在错误的地方。您无法将其解析为该格式。你必须解析P,然后格式化为字符串。

DateTime.Parse(System.DateTime.Now).ToString("dd-MM-yyyy HH:mm:ss")

答案 2 :(得分:1)

在我看来,两种类型的Time属性(ProductImageMap和ProductImageMapWrapper)都是DateTime。如果是这样,那么您应该使用Time = p.Time

有一种常见的误解,即DateTime值以某种方式具有格式。实际上,在将DateTime值转换为字符串时应用给定的格式。要将DateTime值从一个位置复制到另一个位置,只需指定它即可。

答案 3 :(得分:0)

以下是如何从字符串中解析日期的示例,您可以更正此结构以使其工作:

string  p = "21-11-2013 11:12:13";              
DateTime time = DateTime.ParseExact(p, "dd-MM-yyyy HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture);

答案 4 :(得分:0)

在您建议的日期格式中考虑p.Timestring值,我认为您要将string解析为DateTime

        CultureInfo provider = CultureInfo.InvariantCulture;
        string format = "dd-MM-yyyy HH:mm:ss"; //This should be format that you get in string
        List<ProductImageMapWrapper> lstpm = new List<ProductImageMapWrapper>();
        lstpm = _db.ProductImageMaps.Where(i => i.ClientId == null && i.BrandId == null).Select(p => new ProductImageMapWrapper
        {
            Time = DateTime.ParseExact(p.Time, format, provider)
        });

答案 5 :(得分:0)

可能会有帮助

 var selectQuery=from add in db.address
                select add.myDate.toString("{0:dddd, MMMM d, yyyy}");

 selectQuery.Distinct();

正常转化。

DateTime time = DateTime.Now;              // Use current time
string format = "MMM ddd d HH:mm yyyy";    // Use this format
Console.WriteLine(time.ToString(format));

1.MMM显示三个字母的月份 2.ddd显示WEEK的三个字母日 3.d MONTH的显示日 4.HH以24小时制显示两位数小时
5.mm显示两位数分钟
6.yyyy displayfour-digit ye​​ar

答案 6 :(得分:0)

你想使用DateTime.ToString(格式)而不是Nullable.ToString(没有   过载):

  

的DateTime? myDate = form.dteStartDate;   string sqlFormattedDate = myDate.Value.ToString(“yyyy-MM-dd HH:mm:ss”);   当然,这并不能解决没有价值的情况。也许是这样的:

string sqlFormattedDate = myDate.HasValue 
? myDate.Value.ToString("yyyy-MM-dd HH:mm:ss")
: "<not available>";