0

4 つの列を持つ既存の 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

各項目の 4 つの列すべてを検索しようとしている場合は、次のような方法で検索する必要があります。

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

results次に、クエリ テキストがサブアイテムのいずれかに一致する ListViewItems が含まれます。私が思い出す限り、サブアイテムのコレクションにはアイテムのテキストも含まれています。

それらを完全なリスト アイテムとして他のリスト ビューに挿入するには、結果列挙の各アイテムに対して新しい ListViewItem を作成する必要があります。同じ ListViewItem を 2 つの異なるリスト ビューに同時に挿入することはできないためです。

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 に答える