C#搜索项目并在Listview中返回

时间:2018-05-02 15:58:54

标签: c# .net listview listbox

我对C#中的Listview有一些疑问 我的列表视图包含2列,如下所示:

colDATA1          colDATA2
 Value1            Amount1
 Value2            Amount2
 Value3            Amount3
 Value4            Amount4

我想要做的是在Listview中搜索Amount5如果不存在则执行某些操作。如果存在则返回Value5

我正在尝试搜索和使用这样的代码:

If (Listview1.items.containskey("Amount5"))
{}
else
{MessageBox.show("Not Found")}

or if exist then return the value5 *I have no idea how to do.

我在谷歌搜索这个,但大多数只有1列,当我使用代码时,代码无法正常工作。

My question is :
 1. How can I get Value5 if Amount5 exist.

谢谢。

添加项目的代码

First Set listView1 Property "View : Details" Then Using this code
this.Listview1.Items.Add(new ListViewItem(new string[] { Value1, Amount1 }));

1 个答案:

答案 0 :(得分:1)

OP已经明白了,但这只是为了将来参考,以防有人需要它。

缺少OP的是ListView将其项目作为Items属性中的对象保存。

If (Listview1.items.containskey("Amount5"))
{}
else
{MessageBox.show("Not Found")}

containsKey通常在类似字典的数据结构中。但是,ListView控制器的Items是ItemCollection(对于可以使用DataGrid的字典)

在你的情况下,我会使用Linq。

 // Returns the first item that satisfies the condition or null if none does.
        ListViewItem found = items.FirstOrDefault(i => i.SubItems[1].Text.Equals("Amount5"));

        if(found != null) {

            MessageBox.Show(found.SubItems[0].Text.ToString());
        }
        else {

            MessageBox.Show("Not Found!");

        }

你仍然可以使用for循环来做同样的事情。

如果我想使用foreach循环(因为Linq不能直接在ListView.Item上使用)

      ListViewItem found = null;

        foreach (ListViewItem item in listView1.Items) {

            if (item.SubItems[1].Text.Equals("Amount5")) {

                // If a match was found break the loop.
                found = item;
                break;
            }

        }

        if (found != null) {

            MessageBox.Show(found.SubItems[0].Text.ToString());
        }
        else {

            MessageBox.Show("Not Found!");

        }

希望这有帮助!