2014-02-27 2 views
0

저는 LINQ 및 Lambda식이 처음이므로 제 예제를 사용하는 방법을 알고 싶습니다. 자체 비교 목록

나는 수업이 있습니다

public class Map 
{ 
    public string SourceName { get; set; } 
    public string DestinationName { get; set; } 
    public List<Assignment> AssignmentList { get; set; } 

    public Map() 
    { 
     AssignmentList = new List<Assignment>(); 
    } 
} 

지금

public class Assignment 
{ 
    public string Source { get; set; } 
    public string Destination { get; set; } 
    public string SourceName { get; set; } 
    public string DestinationName { get; set; } 
    public string Description { get; set; } 
    public string Mandatory { get; set; } 
    public string Error { get; set; } 

    public void EmptyAssignment() 
    { 
     Source = ""; 
     Destination = ""; 
     SourceName = ""; 
     DestinationName = ""; 
     Description = ""; 
     Mandatory = "False"; 
     Error = "False"; 
    } 
} 

을, 나는 하나의지도에있는 assignment.Destination이 다른지도에 assignment.Source 동일한 경우 확인하려면 목록에 있습니다. 이 모든 것이 같은 목록에 있습니다. 나는 효율적인 방법으로 그 자체와 어떻게 비교할 지 전혀 모른다. 비교는 대소 문자를 구분해야하는 경우

답변

2

:

map.AssignmentList.Any(a => a.Source == a.Destination) 
+0

안녕하세요, 세부 정보를 쓰는 것을 잊었습니다. assignment.Destination은 하나의 Map에 있고 assign.Source는 다른 Map에 있습니다. 죄송합니다. – Th3B0Y

1

이 시도 :

Map map1 = new Map(); 
Map map2 = new Map(); 

var listExists = from d in map1.AssignmentList 
join i in map2.AssignmentList 
    on d.Source equals i.DestinationName 
select d 

    if(listExists.Count > 0) 
    { 
    //is equals 
    } 
+0

안녕하세요, 세부 정보를 쓰는 것을 잊었습니다. assignment.Destination은 하나의 Map에 있고 assign.Source는 다른 Map에 있습니다. 죄송합니다. – Th3B0Y

+0

내 대답 변경 –

1

을을 비교 한 대소 문자를 구분 사용하는 경우이 :

map.AssignmentList.Any(a => a.Source.Equals(a.Destination, StringComparison.OrdinalIgnoreCase)); 

및 대소 문자 구분을 비교 한에 대한

:

map.AssignmentList.Any(a => a.Source.Equals(a.Destination)); 
+0

안녕하세요, 세부 정보를 쓰는 것을 잊어 버렸습니다. assignment.Destination은 하나의 Map에 있고 assign.Source는 다른 Map에 있습니다. 죄송합니다. – Th3B0Y