2013-01-16 3 views
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에있는 경우 을 hash1에서 제거하십시오. 값을 반복하지 않고도이 작업을 수행 할 수 있습니까? 내가 잘못 아니에요 경우두 개의 HashSets을 비교하는 방법은 무엇입니까?

답변

1

, 그것은이 있어야한다 :

입니다
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을 생성하기에 충분하다. 따라서 모든 계산은 배열을 통해 수행됩니다.

+0

감사합니다 .. 그 작품 .. 좋은 직업 .. –

관련 문제