转换为列表时出现问题
public List<DateTime> findDateBetween(DateTime start,DateTime end)
{
var query = from entry in sd.gw_chemistry
where (entry.insert_datetime >=start & entry.insert_datetime<=end & a == entry.well_id & b == entry.indicator_id)
select entry.insert_datetime;
return (List<DateTime>)query;
}`
错误: System.InvalidCastException:无法转换类型&#34; System.Data.Objects.ObjectQuery
1[System.Nullable
1 [System.DateTime]]&#34;输入&#34; System.Collections.Generic.List`1 [System.DateTime]&#34;。
答案 0 :(得分:3)
您的代码存在许多问题。
DateTime?
(或Nullable<DateTime>
)类型的元素。如果日期为null
,您需要决定要执行的操作。从结果中排除它?返回默认值?如果您确定它永远不会是null
,则可以select entry.insert_datetime.Value
。ToList()
将其转换为列表。&&
),您似乎正在使用&
。a
和b
似乎没有在任何地方定义(除非它们是成员变量)。因此,假设a
和b
是成员变量,insert_datetime
永远不是null
,您可以这样做:
return sd.gw_chemistry
.Where(e =>
e.insert_datetime >= start && e.insert_datetime <= end &&
a == entry.well_id && b == entry.indicator_id)
.Select(e => e.insert_datetime.Value)
.ToList();
答案 1 :(得分:0)
由于错误试图告诉您,这不是List<T>
,而您无法将其转换为不属于的类型。
您可以通过调用List<T>
从查询中创建.ToList()
。
答案 2 :(得分:0)
这里没什么大不了的。您只需在ToList()
上致电query
即可。但是,我确实看到使用&
代替&&
是一个严重的问题。
正确的代码应如下所示:
public List<DateTime> findDateBetween(DateTime start,DateTime end)
{
var query =
from entry in sd.gw_chemistry
where (entry.insert_datetime >=start &&
entry.insert_datetime<=end &&
a == entry.well_id &&
b == entry.indicator_id)
select entry.insert_datetime.Value;
return query.ToList();
}`
答案 3 :(得分:0)
public List<DateTime> findDateBetween(DateTime start,DateTime end)
{var query = from entry in sd.gw_chemistry
where (entry.insert_datetime >=start & entry.insert_datetime<=end & a == entry.well_id & b == entry.indicator_id)
select entry.insert_datetime;
return query.ToList();}