在c#中循环linq返回列表
本文关键字:返回 列表 linq 循环 | 更新日期: 2023-09-27 18:04:12
我有一个方法如下
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 ;
你分配给_dataSource
的是List<viewSearchBook>
;为什么你期望它"神奇地"转换成DataTable
?这些类型之间没有转换……为什么不直接遍历列表呢?
foreach (viewSearchBook book in _dataSource)
{
lsvBookSearch.Items.Add(book.bookName);
lsvBookSearch.Items[i].SubItems.Add(book.language);
}
不要将_dataSource
声明为dynamic
,在这种情况下没有意义。dynamic
并不像你想象的那样。