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

时间:2013-03-15 15:07:51

标签: c# linq listview search

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

1 个答案:

答案 0 :(得分: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: / p>

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);
}