7

リスト内のアイテムのIDを取得したい場合は、次のことができると理解しています。

private static void a()
{
    List<string> list = new List<string> {"Box", "Gate", "Car"};
    Predicate<string> predicate = new Predicate<string>(getBoxId);
    int boxId = list.FindIndex(predicate);
}

private static bool getBoxId(string item)
{
    return (item == "box");
}

しかし、比較を動的にしたい場合はどうなりますか?したがって、item == "box"かどうかを確認する代わりに、ユーザーが入力した文字列をデリゲートに渡し、item==searchStringかどうかを確認します。

4

4 に答える 4

18

匿名メソッドまたはラムダを介してコンパイラー生成のクロージャーを使用することは、述語式でカスタム値を使用するための良い方法です。

private static void findMyString(string str)
{
    List<string> list = new List<string> {"Box", "Gate", "Car"};
    int boxId = list.FindIndex(s => s == str);
}

.NET 2.0(ラムダなし)を使用している場合、これも機能します。

private static void findMyString(string str)
{
    List<string> list = new List<string> {"Box", "Gate", "Car"};
    int boxId = list.FindIndex(delegate (string s) { return s == str; });
}
于 2009-06-12T04:25:28.850 に答える
2

あなたはただすることができます

string item = "Car";
...

int itemId = list.FindIndex(a=>a == item);
于 2009-06-12T04:29:08.730 に答える
1
string toLookFor = passedInString;
int boxId = list.FindIndex(new Predicate((s) => (s == toLookFor)));
于 2009-06-12T04:25:54.557 に答える
0
List <string>  list= new List<string>("Box", "Gate", "Car");
string SearchStr ="Box";

    int BoxId= 0;
        foreach (string SearchString in list)
        {
            if (str == SearchString)
            {
                BoxId= list.IndexOf(str);
                break;
            }
        }
于 2015-06-15T13:27:07.433 に答える