2013-01-03 68 views
7

我有一個如何在C#中搜索字符串中的List <組<字符串,字符串>>

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

      } 

我而這樣做失敗了,....

+1

「失敗」是什麼意思? –

+0

究竟是什麼問題? –

+1

你在這裏發佈的代碼有很多編譯錯誤。缺少')',lst顯然不包含Contains的定義。你應該發佈可以編譯並顯示你的問題的代碼。康斯坦丁的答案解決了你的問題。 – ryadavilli

回答

3

也許這應該工作:

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

或該

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

閱讀Tuple Class;您需要通過Item1和/或Item2屬性來訪問元組的值。


爲什麼要使用Tuple?也許這是比較容易:

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

if (dict.ContainsKey("Test")) 
{ 
    MessageBox.Show("Value Avail:\t"+dict["Test"]); 
} 
1

應該foreach (var lst in tr)不lstEvntType,你應該測試元組的項目1場來代替。

0

你爲什麼迭代lstEvntType而不是tr?

if(lst.Contains("Test")) 

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

如果元組有更多的項目,你需要爲所有項目添加條件

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

變化:你應該試試這個。

如果你想讓所有的元組通用,你需要使用Reflection(和the quirky way)。

9

如果你想使用LINQ:

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

這也將有隻顯示一次,如果文本被發現多次(如果那是什麼的話)的消息框的好處。

+0

這是一個很好的例子,也爲我工作:-) – Karan

0

也許這可能會幫助別人。下面是我去的方法:

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

(歸功於here

0
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,你可以檢查在同一時間的可用性和元素的索引。

相關問題