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

これには、テキストが複数回見つかった場合にメッセージ ボックスを 1 回だけ表示するという利点もあります (それが必要な場合)。

于 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プロパティを介してタプルの値にアクセスする必要があります。


そして、なぜ Tuple を使用するのでしょうか。多分これは簡単です:

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

たぶん、これは他の誰かを助けるかもしれません。これが私が行った方法です:

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

foreach (var lst in tr)lstEvntType ではなく、代わりにタプルの Item1 フィールドをテストする必要があります。

于 2013-01-03T06:38:40.747 に答える
0

変化する

if(lst.Contains("Test"))

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

タプルに複数のアイテムがある場合は、すべてのアイテムに条件を追加する必要があります。

すべてのタプルに共通にしたい場合は、リフレクション (および風変わりな方法) を使用する必要があります。

于 2013-01-03T06:48:24.693 に答える
0

tr ではなく lstEvntType を反復処理しているのはなぜですか? これを試してください:

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