IndexOf和包含ArrayList C#

时间:2013-10-17 13:58:40

标签: c# arraylist

我有一个包含重复项(sorta)的ArrayList。

ArrayList al= new ArrayList();
al.Add("0","Detroit","Chicago","Week 2");
al.Add("1","Detroit","Baltimore","Week 3");
al.Add("2","Chicago","Boston","Week 2");
al.Add("3","Detroit","Tampa","Week 2");

我想知道ArrayList是否包含“Detroit”和“Week 2”。真的,我想避免在ArrayList中添加Line“3”,因为“Detroit”“Week 2”已经在列表中了。

我对IndexOf和Contains的尝试都被证明是不能令人满意的。 感谢

2 个答案:

答案 0 :(得分:0)

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

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<string[]>的原因。您可以根据需要修改该部分代码。如果您使用int作为ID或序列号的数据类型,也会更好。

答案 1 :(得分:0)

我不确定你想要实现什么,因为你没有非常清楚地解释它。但是如果你需要搜索列表中添加的数组,并且你不介意使用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();