0

我想搜索具有四列的现有 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());
    }
}
4

1 回答 1

1

如果您尝试在每个项目的所有四列中进行搜索,那么这样的事情应该是诀窍:

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);
}
于 2013-03-15T15:12:59.163 回答