我有一个包含重复项(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的尝试都被证明是不能令人满意的。 感谢
答案 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();