2014-07-26 2 views
-2

enter image description herelinq을 사용하는 두 목록 비교

그림과 같이 두 개의 목록이 있습니다. 내가 원하는 출력은 아래 그림과 같이 목록 1에없는 목록 2에서 상태를 제거해야합니다. 감사합니다

enter image description here

+0

Whert 멋진 그림을하지만 StackOverflow의는 "저를 쓰기 코드이 그 일을"하기위한 것이 아닙니다. –

+0

@ Konrad Kokosa : 죄송합니다. 린치에 초심자입니다. 아무 생각이 들지 않습니다. 도움이 필요하다면 – user2931394

답변

1

이 내부 조인 전형은, 따라서 당신은 LINQ Join 방법을 사용할 수 있습니다

var list3 = list2.Join(list1, x => x.State, y => y.State, (x, y) => x) 
       .ToList(); 
1
for(int i=0;i<list2.Count;i++) 
{ 
    if(!list1.Select(p=>p.State).Contains(list2[i].State)) 
    { 
     list2.RemoveAt(i); 
    } 
} 

나 :

var improve_list2 = (from c in list2 
        where list1.Select(p=>p.State).Contains(c.State) 
        select c).ToArray(); 
2

다음과 같은 경우,이 또는 결과 1,2

을 줄 것이다

var list1 = new [] {1,2,4}; 
var list2 = new [] {1,2,3}; 
list1.Intersect(list2); 

인터 섹트 방법을 사용할 수 있습니다 당신은 아프다. e 당신이 만든 클래스를 사용하면 intersect 메서드에 무엇이 무엇인지를 알려주는 비교자를 생성해야합니다.

 var productList1 = new List<Product>(); 
     productList1.Add(new Product { Code = 1, Name = "Pears" }); 
     productList1.Add(new Product { Code = 2, Name = "Rasbries" }); 
     productList1.Add(new Product { Code = 3, Name = "Apple" }); 

     var productList2 = new List<Product>(); 
     productList2.Add(new Product { Code = 1, Name = "Pears" }); 
     productList2.Add(new Product { Code = 2, Name = "Rassbeyreys" }); 
     productList2.Add(new Product { Code = 4, Name = "Avocado" }); 

     var result = productList1.Intersect(productList2, new ProductComparer()); 


public class ProductComparer : IEqualityComparer<Product> 
{ 
    public bool Equals(Product x, Product y) 
    { 
     return x.Code == y.Code; 
    } 

    public int GetHashCode(Product obj) 
    { 
     return obj.Code; 
    } 
} 
+0

이것이 답이라고 생각한다면 그것을 선택하십시오 :-) – orangesherbert