C# 使用字符串获取ArrayList中的每个indexOf

C# 使用字符串获取ArrayList中的每个indexOf,c#,arraylist,indexof,C#,Arraylist,Indexof,首先,我在unity的内部使用c。好的,我有一个ArrayList。列出我们将称之为的项目。项目内容为{苹果、苹果、浆果、苹果、坚果};我想知道一种使用items.indexOf()查找苹果所有索引号的方法;或者其他一些功能。内容列表就是一个例子,在我使用的程序中,我不能确切地知道内容,因为它们在大小和内容上都是不同的列表。任何帮助都将不胜感激 尝试以下操作: var result = list .Cast<TypeOfTheObjects>()

首先,我在unity的内部使用c。好的,我有一个ArrayList。列出我们将称之为的项目。项目内容为{苹果、苹果、浆果、苹果、坚果};我想知道一种使用items.indexOf()查找苹果所有索引号的方法;或者其他一些功能。内容列表就是一个例子,在我使用的程序中,我不能确切地知道内容,因为它们在大小和内容上都是不同的列表。任何帮助都将不胜感激

尝试以下操作:

var result = list
    .Cast<TypeOfTheObjects>()                       // non-generic ArrayList needs a cast
    .Select((item, index) => new { Index = index, Item = item }) // select each item with its index
    .Where(x => apple.Equals(x.Item))               // filter
    .Select(x => x.Index)                           // select only index
    .ToList();
var结果=列表
.Cast()//非泛型ArrayList需要强制转换
.Select((项,索引)=>new{index=index,item=item})//选择每个项及其索引
.Where(x=>apple.Equals(x.Item))//过滤器
.Select(x=>x.Index)//仅选择索引
.ToList();

根据对象的类型(及其
等于
实现),您可能必须修改相等检查。

非Linq方式:

private static List<int> Find(ArrayList items, string entry)
{
    var ret = new List<int>();
    for (var i = 0; i < items.Count; i++)
        if ((string) items[i] == entry)
            ret.Add(i);
    return ret;
}
私有静态列表查找(ArrayList项、字符串项)
{
var ret=新列表();
对于(变量i=0;i
var results=yourList.Cast()
.选择((水果,索引)=>水果。名称==“苹果”?索引:-1)
.其中(elem=>elem>=0)
.ToList();

为什么不遍历列表项?为了更好地理解这一点,我应该澄清一下,。。。我不一定知道物品的内容。。。我用这个来运行一个清单,。。。这将是获得所需的项目来做事情,并将不得不通过不同内容的许多不同的需求集运行。。。所以我不能使用一个假设我知道内容的方法,我被indexOf或者类似的方法吸引住了,我甚至没有想到其他方法。非常感谢。
var results = yourList.Cast<Fruit>()
                      .Select((fruit, index) => fruit.Name == "apple" ? index : -1)
                      .Where(elem => elem >= 0)
                      .ToList();