1

リストアイテムを持っています

List<string> xmlValue = new List<string>();

これには{"English","Spanish","French","Hindi","English","English"} 、すべての英語のアイテムとそのを検索する必要があるアイテムがありIndex(item index)ます。1つのアイテムのインデックスのみを返す以下のコードを記述しました。次のアイテムのインデックスも取得するにはどうすればよいですか。

    string search = "English";
    int index = xmlValue.Select((item, i) => new { Item = item, Index = i })
    .First(x => x.Item == search).Index;
4

2 に答える 2

4
List<string> xmlValue = new List<string>() 
                 {"English", "Spanish", "French", "Hindi", "English", "English"};

string search = "English";

int[] result = xmlValue.Select((b, i) => b.Equals(search) ? i : -1)
                       .Where(i => i != -1).ToArray();
于 2012-07-02T10:58:22.287 に答える
1

この場合、LINQ拡張メソッドの使用を選択せず​​、「昔ながらの」ループを使用します。

string search = "English";

var foundIndices = new List<int>(xmlValue.Count);
for (int i = 0; i < xmlValue.Count; i++) {
    if (xmlValue[i] == search) {
        foundIndices.Add(i);
    }
}

私の意見では、このように読みやすくなっています。また、foundIndicesリストに不要な値が含まれることはありません。

于 2012-07-02T11:03:40.580 に答える