我有一个方法如下
public List<viewSearchBook> GetAllBookInfos()
{
var context = new BookSearchDataClassesDataContext { ObjectTrackingEnabled = false };
return context.viewSearchBooks.OrderBy(p => p.bookName).ToList();
}
在另一个页面中,我想按如下方式填写列表视图:
private void btnSearch_Click(object sender, EventArgs e)
{
var personnelServer = new BookPersonnelServer();
_dataSource = personnelServer.GetAllBookInfos();
lsvBookSearch.View = View.Details;
lsvBookSearch.Columns.Add("bookName");
lsvBookSearch.Columns.Add("language");
DataTable tableBookInfo=(Datatable)_dataSource ;
for (int i = 0; i < tableBookInfo.Rows.Count;i++ )
{
lsvBookSearch.Items.Add(Convert.ToString(tableBookInfo.Rows[i]["bookName"]));
lsvBookSearch.Items[i].SubItems.Add(Convert.ToString(tableBookInfo.Rows[i]["language"]));
}
}
_dataSource定义如下。
private dynamic _dataSource;
如何遍历_dataSource。
DataTable tableBookInfo=(Datatable)_dataSource ;
上述转换不正确。
答案 0 :(得分:1)
您分配给_dataSource
的内容是List<viewSearchBook>
;你为什么期望它是神奇的&#34;转换为DataTable
?这些类型之间没有转换......为什么不循环遍历列表呢?
foreach (viewSearchBook book in _dataSource)
{
lsvBookSearch.Items.Add(book.bookName);
lsvBookSearch.Items[i].SubItems.Add(book.language);
}
并且不要将_dataSource
声明为dynamic
,在这种情况下它没有意义。 dynamic
并没有做你认为它做的事情。