循环遍历c#中的linq返回列表

时间:2015-07-22 10:16:43

标签: c# linq loops

我有一个方法如下

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 ;

上述转换不正确。

1 个答案:

答案 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并没有做你认为它做的事情。

相关问题