我在使用LINQ select语句时遇到了基本的困难。
我想要的很简单:我有一个ID。我使用该ID从表中获取特定值。它确实有效,但有一个转折......
以下是代码:
var myDate = dbContext.tbl_mytable.Where(i => i.myID == item.myID)
.Select(i => new {Name = i.KeySourceDate});
我在myDate中期待DateTime
。图像显示了我得到的东西。
我理解name = thedate的最终值,因为它在select语句中。
我最后需要的是一个像这样的日期.ToString(“dd / MM / yyyy”),而不是整个对象,或者来自LINQ的任何东西。
答案 0 :(得分:2)
您正在检索具有ID的行列表,但您所说的内容是单个日期时间。有很多方法可以做到这一点,具体取决于您在使用该ID找到多行的情况下您想要发生什么,或者如果没有找到具有该ID的行,但是这里有一种方式:
var myDate = dbContext.tbl_mytable.First(i => i.myID == item.myID).KeySourceDate;
答案 1 :(得分:0)
您可以在尝试获取结果之前评估Id
是否存在。
但基本上,您可以使用以下方式获取日期:
DateTime? myDate;
var record = dbContext.tbl_mytable.FirstOrDefault(i => i.myID == item.myID);
if (record != null){
myDate = record.KeySourceDate
}
答案 2 :(得分:0)
当您通过Linq请求日期字段时,您将获得一个DateTime对象。您所要做的就是在分配值时使用格式化程序字符串作为参数调用toString()方法,如: ......
new { Name = i.KeySourceDate.toString("dd/MM/yyyy") }