13

我有一个

        List<Tuple<string,string>> tr = new List<Tuple<string,string>>();
        tr.Add(new Tuple<string, string>("Test","Add");
        tr.Add(new Tuple<string, string>("Welcome","Update");

        foreach (var lst in tr)
         {
             if(lst.Contains("Test"))
              MessageBox.Show("Value Avail");

          }

我在这样做时失败了,......

4

7 回答 7

15

如果您想使用 LINQ:

if(tr.Any(t => t.Item1 == "Test" || t.Item2 == "Test"))
    MessageBox.Show("Value Avail");

如果多次找到文本(如果需要的话),这也将具有仅显示一次消息框的好处。

于 2013-01-03T06:50:14.673 回答
10

可能这应该工作:

foreach (var lst in tr)
{        
    if (lst.Item1.Equals("Test"))        
        MessageBox.Show("Value Avail");
}

或这个

if (lst.Item1.Equals("Test") || lst.Item2.Equals("Test"))

读取元组类;您需要通过Item1和/或Item2属性访问元组的值。


为什么要使用元组呢?也许这更容易:

Dictionary<string, string> dict = new Dictionary<string, string>
{
    {"Test", "Add"},
    {"Welcome", "Update"}
};

if (dict.ContainsKey("Test"))
{
    MessageBox.Show("Value Avail:\t"+dict["Test"]);
}
于 2013-01-03T06:38:25.683 回答
1

它不应该是foreach (var lst in tr)lstEvntType 并且您应该测试元组的 Item1 字段。

于 2013-01-03T06:38:40.747 回答
1

也许这可能对其他人有所帮助。这是我采用的方法:

List<Tuple<string,string>> tr = new List<Tuple<string,string>>();
tr.Add(new Tuple<string, string>("Test","Add");
tr.Add(new Tuple<string, string>("Welcome","Update");

if(lst.Any(c => c.Item1.Contains("Test")))
    MessageBox.Show("Value Avail");

(信用在这里

于 2016-01-17T19:43:16.727 回答
1
List<Tuple<string,string>> tr = new List<Tuple<string,string>>();
tr.Add(new Tuple<string, string>("Test","Add");
tr.Add(new Tuple<string, string>("Welcome","Update");
var index = tr.FindIndex(s=>s.Item1 == "Test" || s.Item2 == "Test");
if(index != -1)
MessageBox.Show("Value Avail");

使用 FindIndex,您可以同时检查元素的可用性和索引。

于 2016-07-20T04:25:30.287 回答
0

为什么要迭代 lstEvntType 而不是 tr?你应该试试这个:

List<Tuple<string,string>> tr = new List<Tuple<string,string>>();
tr.Add(new Tuple<string, string>("Test","Add"));
tr.Add(new Tuple<string, string>("Welcome","Update"));
List<Tuple<string,string>>  lstEvntType = new List<Tuple<string,string>>();

    foreach (var lst in tr)
    {
        if(lst.Item1.Equals("Test"))
            MessageBox.Show("Value Avail");
    }
于 2013-01-03T06:41:32.280 回答
0

改变

if(lst.Contains("Test"))

 if(lst.Item1.Contains("Test") ||  lst.Item2.Contains("Test"))

如果 tuple 有更多项,则需要为所有项添加条件。

如果你想让所有元组通用,你需要使用反射(和古怪的方式)。

于 2013-01-03T06:48:24.693 回答