2014-02-27 49 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

你好,我忘了寫一個細節。 assign.Destination位於另一個Map中的Map和assignment.Source中。對不起,忘記了。 – 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

你好,我忘了寫一個細節。 assign.Destination位於另一個Map中的Map和assignment.Source中。對不起,忘記了。 – Th3B0Y

+0

我改變了我的答案 –

1

如果比較是不區分大小寫的使用:

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

並區分大小寫比較:

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

你好,我忘了寫一個細節。 assign.Destination位於另一個Map中的Map和assignment.Source中。對不起,忘記了。 – Th3B0Y