使用 LINQ 获取日期时间值
本文关键字:时间 取日期 获取 LINQ 使用 | 更新日期: 2023-09-27 18:33:43
我对 Linq 很陌生,所以这个简单的问题让我卡住了: 我想要的只是从查询中获取日期时间值:
var queryW = (from r in aTable.AsEnumerable()
where r.Field<string>("Department") == "Workshop"
select r.Field<DateTime>("LastCall"));
并将其从var
转换为datetime
DateTime AliveW = Convert.ToDateTime(queryW);
这会导致异常:
Additional information: Unable to cast object of type 'System.Data.EnumerableRowCollection`1[System.DateTime]' to type 'System.IConvertible'.
我也试过
DateTime AliveW = Convert.ToDateTime(queryW.FirstOrDefault<DateTime>);
DateTime AliveW = Convert.ToDateTime(queryW.First<DateTime>);
没有运气
您拥有的查询将返回一个IEnumerable<DateTime>
,即可以枚举/迭代的DateTime
集合,但您尝试只获取一个DateTime
。你只想要第一个,即
var queryW = (from r in aTable.AsEnumerable()
where r.Field<string>("Department") == "Workshop"
select r.Field<DateTime>("LastCall")).First();
请注意,如果集合中没有DateTime
,这将引发异常,在这种情况下,您可能需要使用 FirstOrDefault()
,在集合不包含任何DateTime
的情况下,它将返回default(DateTime)
。
linq 查询不会像您想象的那样返回单个值。 该错误告诉您正在获取行集合类型的枚举。 如果您确定查询应返回一个值,则可以添加 .单() 或 .First() 调用查询的末尾。
var queryW = (from r in aTable.AsEnumerable()
where r.Field<string>("Department") == "Workshop"
select r.Field<DateTime>("LastCall")).FirstorDefault();
尝试使用 var 而不是日期时间
var AliveW = Convert.ToDateTime(queryW);
您可以使用类似的东西
DateTime usTime = (DateTime)(aTable.AsEnumerable().Where(r=>r.Name=="Reporter").Select(r => r.UsTime).First());
试试这个,如果有效,请将其标记为答案