我有以下代码:

ListBox.DataSource = DataSet.Tables("table_name").Select("some_criteria = match")
ListBox.DisplayMember = "name"

DataTable .Select()方法返回 System.Data.DataRow 对象。

无论我在 ListBox.DisplayMember 属性中指定什么,我看到的只是具有正确数量的项目的ListBox,所有项目都显示为 System.Data.DataRow 我想要的值在" name" 列中!

是否可以从 DataTable.Select()绑定到生成的数组,而不是循环遍历它并将每个数据添加到 ListBox

(循环没问题,但看起来不是优雅的结局!)

有帮助吗?

解决方案

请改用 DataView

ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows);
ListBox.DisplayMember = "name"

其他提示

Josh使用DataView是正确的。如果你需要一个非常大的锤子,你可以从任何DataTable.Select(" ...")获取行数组,然后合并到另一个DataSet中。


 DataSet copy = new DataSet();
 copy.Merge(myDataTable.Select("Foo='Bar'"));
 // copy.Tables[0] has a clone

你想要做的事情的方法很可能是矫枉过正,但有些情况下,你可能需要从行数组中获取一个有用的数据表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top