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);

}

我想比较hash1hash2。如果a.txt文件存在,hash2则从. 我们可以在没有迭代值的情况下做到这一点吗? C:/folder/a.txthash1

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 回答