-4

我有一个包含重复项(排序)的 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 是否包括“底特律”和“第 2 周”。真的,我想避免将第“3”行添加到 ArrayList,因为“底特律”“第 2 周”已经在列表中。

事实证明,我对 IndexOf 和 Contains 的尝试都不令人满意。谢谢

4

2 回答 2

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();
于 2013-10-17T14:18:43.387 回答
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[]>for input。您可以根据需要修改该部分代码。如果您将其int用作您的ID或序列号的数据类型,它也会更好。

于 2013-10-17T14:13:01.377 回答