0
private void button1_Click(object sender, EventArgs e)
{
   string[] array1 = { "C:/folder/a.txt", "C:/folder/b.txt", "C:/folder/c.txt", "C:/folder/d.txt" };

   string[] array2 = { "D:/a.txt", "D:/b.txt", "D:/c.txt", "D:/d.txt" };

   var hash1 = new HashSet<string>(array1);

   var hash2 = new HashSet<string>(array2);

}

hash1と比較したいhash2a.txtファイルが に存在する場合は、 からhash2削除C:/folder/a.txthash1ます。Iterate values なしでこれを行うことはできますか?

4

1 に答える 1

0

私が間違っていなければ、次のようになります。

var result = array1.Where(a1 =>  //take only those items from array1, which
              !array2.Any(     //have no such item in array2 
                a2 => a2.Contains(  //that contains
                   a1.Substring(a1.LastIndexOf("/"))))); //a similar filename

var hash1 = new HashSet<string>(result);
var hash2 = new HashSet<string>(array2);

つまり、HashSetすでに必要な値で作成するだけで十分です。したがって、すべての計算は配列に対して行われます。

于 2013-01-16T07:07:26.310 に答える