我是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中的任何赋值。目标是否等于列表中任何其他地图中的赋值。所有这些都在同一个列表中。我不知道如何以有效的方式与自己进行比较。
答案 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));