【发布时间】:2012-02-05 01:25:42
【问题描述】:
我知道 LINQ 应该自动返回强类型结果集。但是,当我将 ObjectDataSource 附加到基于 LINQ 的方法时(没有显式返回类型),我无法访问 LINQ 中定义的任何列。
示例方法:
<System.ComponentModel.DataObjectMethod(ComponentModel.DataObjectMethodType.Select)> _
Public Function GetMarketClusterList() As IEnumerable(Of MarketCluster)
Return From d In db.tblMarkets
Select New MarketCluster With {.MarketCluster = d.MarketCluster}
Distinct
End Function
Public Class MarketCluster
Public MarketCluster As String
End Class
编辑 我将代码更改为使用显式类型并选择其中。至少现在我知道返回类型,但它对原始问题没有帮助。更奇怪的是,我在调试器中发现,如果我这样做了
它失败并说“在所选数据源上找不到名为 MarketCluster 的字段或属性”,但如果我这样做 效果很好!
【问题讨论】:
-
为什么不指定函数的返回类型?
-
我认为 Distinct 不会达到您的预期。它将比较引用而不是您设置 .MarketCluster 的字符串,并且由于您正在构建列表中的所有对象,因此您在引用上调用 distinct 都已经是唯一的
-
为什么不简单地返回一个 IEnumerable(Of String) 而不是引入一个包装类?
标签: vb.net linq entity-framework linq-to-entities