搜索/查询ListView并将结果打印到新的ListView

本文关键字:ListView 打印 结果 查询 搜索 | 更新日期: 2023-09-27 18:04:00

我想搜索一个现有的有四列的ListView,并在一个全新的ListView中打印搜索结果。以下是目前为止的内容:

private void qryBtn_Click(object sender, EventArgs e)
{
    var results = listResx.Items.Cast<ListViewItem>()
      .Where(x => x.Text.Contains(textQuery.Text));
    foreach (var d in results)
    {
        listQuery.Items.Add(d.ToString());
    }
}

搜索/查询ListView并将结果打印到新的ListView

如果您试图在每个项目的所有四列中进行搜索,那么像这样的操作应该会奏效:

var results = listResx.Items.Cast<ListViewItem>()
      .Where(x => x.Subitems.Cast<ListViewItem.ListViewSubItem>()
                  .Any(si => si.Text.Contains(textQuery.Text)
            );
然后,

results将包含ListViewItems,其中查询文本与任何子项匹配。据我回忆,子项的集合也包括该项的文本。

要在另一个列表视图中插入完整的列表项,你必须为结果枚举中的每个项创建一个新的ListViewItem,因为你不能同时在两个不同的列表视图中插入相同的ListViewItem:

foreach (var d in results)
{
    ListViewItem lvi = new ListViewItem();
    foreach(ListViewItem.ListViewSubItem si in d.SubItems)
    {
        lvi.SubItems.Add(si.Text);
    }
    listQuery.Items.Add(lvi);
}