列表与自己比较

时间:2014-02-27 13:10:27

标签: c# .net linq visual-studio lambda

我是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";
    }
}

现在,我想检查一个Map中的任何赋值。目标是否等于列表中任何其他地图中的赋值。所有这些都在同一个列表中。我不知道如何以有效的方式与自己进行比较。

3 个答案:

答案 0 :(得分:2)

如果比较应区分大小写:

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

答案 1 :(得分: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
   }

答案 2 :(得分:1)

如果比较不区分大小写,请使用:

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

并进行区分大小写的比较:

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