我有以下代码:
ListBox.DataSource = DataSet.Tables("table_name").Select("some_criteria = match")
ListBox.DisplayMember = "name"
DataTable.Select()
method会返回System.Data.DataRow
个对象的数组。
无论我在ListBox.DisplayMember
属性中指定了什么,我看到的只是ListBox,其正确的项目数显示为System.Data.DataRow
,而不是我想要的值{{1}列!
是否可以从"name"
绑定到生成的数组,而不是循环遍历它并将每个数组添加到DataTable.Select()
?
(循环没问题,但看起来不是优雅的结局!)
答案 0 :(得分:33)
改为使用DataView。
ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows);
ListBox.DisplayMember = "name"
答案 1 :(得分:1)
Josh使用DataView是正确的。如果你需要一个非常大的锤子,你可以从任何DataTable.Select(“...”)获取行数组并合并到另一个DataSet中。
DataSet copy = new DataSet();
copy.Merge(myDataTable.Select("Foo='Bar'"));
// copy.Tables[0] has a clone
你想要做的事情的方法很可能是矫枉过正,但有些情况下,你可能需要从行数组中获取一个有用的数据表。