-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 に「Detroit」と「Week 2」が含まれているかどうかを調べたい。「Detroit」「Week 2」がすでにリストにあるため、行「3」を ArrayList に追加することは避けたいと思います。

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[]>ため、入力用を作成しました。必要に応じてコードのその部分を変更できます。またはシリアル番号intのデータ型として使用する場合にも適しています。ID

于 2013-10-17T14:13:01.377 に答える