私はLINQが自動的に強く型付けされた結果セットを返すと思います。しかし、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
EDIT。少なくとも私は戻り値の型を知っていますが、元の問題には役立ちません。もし私がそうであれば、私はデバッガで、もしそうならば、デバッガで、MarketClusterという名前のフィールドまたはプロパティが選択されたデータソースに見つかりませんでした。しかし、もし私が<%Container.DataItem.MarketCluser%>それはうまく動作します! d.MarketCluster
のタイプはMarketCluster
と仮定...
Public Function GetMarketClusterList() As IEnumerable(Of MarketCluster)
Return From d In db.tblMarkets
Select d.MarketCluster
Distinct
End Function
(又はIEnumerable
の代わりIQueryable
を使用)
:
なぜ関数の戻り値の型を指定しないのですか? – Jan
私はDistinctがあなたの期待することはしないと思います。 .MarketClusterを設定した文字列ではなく、参照で別名を呼び出しているリスト内のすべてのオブジェクトを構築しているので、参照はすべて一意になります –
導入する代わりに単にIEnumerable(Of String)ラッパークラス? –