【问题标题】:ObjectResult<Nullable<DateTime>> to IEnumerable<DateTime>?ObjectResult<Nullable<DateTime>> 到 IEnumerable<DateTime>?
【发布时间】:2011-05-23 09:37:59
【问题描述】:

我已通过函数导入将存储过程(请参阅my previous question w/proc code)附加到我的实体框架模型中,选择“标量:日期时间”以获取日期时间集合作为返回类型。我在我的存储库中调用它:

return _DataContext.GetPubsDistinctMonthYears(pubType, pubId).AsEnumerable();

我需要repository方法返回IEnumerable;但是,该函数返回 ObjectResult&lt;Nullable&lt;DateTime&gt;(其中包含正确的 DateTime 值),如果我将其转换为 IEnumerable,则结果为空。

“安全投射”也不起作用:

return _DataContext.GetPubsDistinctMonthYears(pubType, pubId) as IEnumerable<DateTIme>;

问题
那么我需要在存储过程和存储库中做什么/都做些什么来获取我的 IEnumerable?

【问题讨论】:

  • 请用更真实的代码编辑您的问题 - return = 永远无效。

标签: sql-server entity-framework stored-procedures ienumerable


【解决方案1】:

看起来你只是想要这样的东西:

return _DataContext.GetPubsDistinctMonthYears(pubType, pubId)
                   .Select(x => x.Value);

但是,如果有任何空值,那将会爆炸。要忽略空值,您可以使用:

return _DataContext.GetPubsDistinctMonthYears(pubType, pubId)
                   .Where(x => x.HasValue)
                   .Select(x => x.Value);

【讨论】:

  • .Where(x => x.HasValue) 是票。但请注意:我仍然需要 AsEnumerable();
  • @Faust:如果GetPubsDistinctMonthYears 返回ObjectResult&lt;T&gt;,你就不需要AsEnumerable,因为它实现了IEnumerable&lt;T&gt;。当你没有给AsEnumerable打电话时出了什么问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2013-06-20
  • 2021-07-25
  • 1970-01-01
  • 2011-06-13
  • 2011-05-31
  • 1970-01-01
相关资源
最近更新 更多