次のような LINQ クエリがあります。
allRecords = (From metaset In section.sets
From metacell In metaset.cells
Let attrib = metacell.attrib
Order By attrib.attrib_name
Select Attribute = attrib.attrib_name,
Type = attrib.attrib_name,
Col = metacell.column,
Row = metacell.row
).ToArray()
<anonymous type>
配列を返します。
と書くmyDataGridView.DataSource = allRecords
と、グリッドが正しく塗りつぶされます。
CellDetail
しかし、代わりにオブジェクトの配列を返すようにクエリを変更すると、次のようになります<anonymous type>
。
allRecords = (From metaset In section.sets
From metacell In metaset.cells
Let attrib = metacell.attrib
Order By attrib.attrib_name
Select New CellDetail With {
.Attribute = attrib.attrib_name,
.Type = attrib.attrib_name,
.Col = metacell.column,
.Row = metacell.row
).ToArray()
どこCellDetail
でそのように定義されています:
Public Class CellDetail
Public Attribute As String
Public Type As String
Public Col As Int32
Public Row As Int32
End Class
DataGridView は互換性のあるデータを見つけられず、何も表示されません!
CellDetail
クラスを DataGridView の DataSource と互換性を持たせるために実装する必要がある .Net インターフェイスはありますか?