C# linq从日期时间获取日期

C# linq从日期时间获取日期,c#,linq,datetime,gridview,C#,Linq,Datetime,Gridview,我需要从linq中的datetime获取日期,如下所示: var items = db.Students.ToList().Select(u => new { bi = u.Birthday.Date }); 但网格中的项目显示如下: 我怎样才能修好它 谢谢。方法string.Format无法转换为SQL语句。但是您可以先具体化行.ToList()然后再具体化string.Format var items = db.Students.ToList().Select(u => ne

我需要从linq中的datetime获取日期,如下所示:

var items = db.Students.ToList().Select(u => new { bi = u.Birthday.Date });
但网格中的项目显示如下:

我怎样才能修好它


谢谢。

方法
string.Format
无法转换为SQL语句。但是您可以先具体化行
.ToList()
然后再具体化
string.Format

var items = db.Students.ToList().Select(u => new { bi = string.Format("{0:MM/dd/yyyy}", u.Birthday) });

我假设生日是一个字符串?它是什么格式的?你真的应该将生日存储为DateTime对象,而不是字符串,这会让你的生活更轻松。如果该字段存储为字符串供初学者使用,则无法可靠地对其进行排序。为什么要尝试生成字符串而不是简单地返回日期???如果要格式化要显示的值,请在视图或窗体上执行,而不是在查询上执行。如果只想返回日期部分,请使用
.date
什么是
Birhday
的类型?@GavinCoates生日是一个日期时间。我不想转换为字符串。@PanagiotisKanavos生日是日期时间。我编辑了我的问题。Linq的力量有时会起反作用;-)它是如此强大,以至于你无法想象有什么是它做不到的。但是,在处理SqlServer等非.NET源代码时,Linq有时无法将Linq“转换”为SQl语句。“不能在商店表达式中翻译”的信息在这种情况下并不十分清楚。@Michel你是什么意思?错误很明显-不能使用String.Format,仅此而已。事实上,尝试在SQL中格式化字符串通常是一个坏主意,即使有一个
format
函数可用于应答,但我需要使用日期格式对项目进行排序。我编辑了我的问题。我需要日期格式。@PanagiotisKanavos:我不认为当您第一次遇到这个问题(Linq无法将您的Linq转换为Sql)时,.NET会在消息“无法在存储表达式中转换”中给出明确的提示