IndexOf并包含ArrayList C#

IndexOf并包含ArrayList C#,c#,arraylist,C#,Arraylist,我有一个包含重复项(排序)的ArrayList 我想知道ArrayList是否包括“Detroit”和“Week 2”。实际上,我不想在ArrayList中添加行“3”,因为“Detroit”“Week 2”已经在列表中了 我在IndexOf和Contains两个方面的尝试都不令人满意。 谢谢您可以创建自己的类,如: class MyItem { public string No { get; set; } public string CityName { get; set; }

我有一个包含重复项(排序)的ArrayList

我想知道ArrayList是否包括“Detroit”和“Week 2”。实际上,我不想在ArrayList中添加行“3”,因为“Detroit”“Week 2”已经在列表中了

我在IndexOf和Contains两个方面的尝试都不令人满意。
谢谢

您可以创建自己的类,如:

class MyItem
{
    public string No { get; set; }
    public string CityName { get; set; }
    public string OtherCityName { get; set; }
    public string Period { get; set; }

    public MyItem(string No, string CityName, string OtherCityName, string Period)
    {
        this.No = No;
        this.CityName = CityName;
        this.OtherCityName = OtherCityName;
        this.Period = Period;
    }
}
稍后,您可以在检查列表中是否不存在输入后添加该输入

List<MyItem> list = new List<MyItem>();
List<string[]> input = new List<string[]>();
input.Add(new[] { "0", "Detroit", "Chicago", "Week 2" });
input.Add(new[] { "1", "Detroit", "Baltimore", "Week 3" });
input.Add(new[] { "2", "Chicago", "Boston", "Week 2" });
input.Add(new[] { "3", "Detroit", "Tampa", "Week 2" });

foreach (var item in input)
{
    if (!list.Any(r => r.CityName == item[1] && r.Period == item[3]))
    {
        list.Add(new MyItem(item[0], item[1], item[2], item[3]));
    }
}
List List=新列表();
列表输入=新列表();
添加(新[]{“0”、“底特律”、“芝加哥”、“第2周”});
输入.添加(新[]{“1”、“底特律”、“巴尔的摩”、“第3周”});
输入.添加(新[]{“2”,“芝加哥”,“波士顿”,“第2周”});
输入.添加(新[]{“3”、“底特律”、“坦帕”、“第2周”});
foreach(输入中的变量项)
{
如果(!list.Any(r=>r.CityName==项目[1]&&r.Period==项目[3]))
{
列表.添加(新的MyItem(项目[0],项目[1],项目[2],项目[3]);
}
}

我不确定您是如何获得输入的,这就是我为输入创建
列表的原因。您可以根据需要修改这部分代码。如果使用
int
作为
ID
或序列号的数据类型,也会更好

我不确定你到底想要实现什么,因为你没有解释清楚。但是,如果您需要在添加到列表中的数组中进行搜索,并且您不介意使用linq来简化搜索,那么下面将编译并提供所需的结果

 List<string[]> list = new List<string[]>();
  string[] str1 = new string[] { "0", "Chicago", "Chicago", "Week 2" };
  string[] str2 = new string[] { "1", "Detroit", "Baltimore", "Week 3" };
  list.Add(str1);
  list.Add(str2);

  var t = list.Where(l => l.Contains("Chicago") || l.Contains("Week2")).ToList();
List List=新列表();
字符串[]str1=新字符串[]{“0”、“芝加哥”、“芝加哥”、“第2周”};
字符串[]str2=新字符串[]{“1”、“底特律”、“巴尔的摩”、“第3周”};
添加列表(str1);
添加列表(str2);
var t=list.Where(l=>l.Contains(“芝加哥”)| | l.Contains(“周末”)).ToList();

您的代码未编译。此代码未编译,您不使用
列表的任何原因
?索引应添加为整数,而不是字符串-例如
al.Add(0,“底特律”、“芝加哥”、“周”)。这是IndexOf失败的一个可能原因。更多信息将非常有用:)没有接受4个参数的ArrayList。你最好用四个属性来修改你自己的数据类型,然后创建一些这种类型的instancen并将其添加到你的列表中。a)非编译代码,b)“它不工作”,没有细节。
 List<string[]> list = new List<string[]>();
  string[] str1 = new string[] { "0", "Chicago", "Chicago", "Week 2" };
  string[] str2 = new string[] { "1", "Detroit", "Baltimore", "Week 3" };
  list.Add(str1);
  list.Add(str2);

  var t = list.Where(l => l.Contains("Chicago") || l.Contains("Week2")).ToList();