C#對List中的資料進行取交集、並集、差集和去重操作的方法
第一步:定義兩個list並進行初始化
public List<string> GetList1()
{
List<string> list1 = new List<string>();
list1.Add("1");
list1.Add("2");
list1.Add("3");
list1.Add("4");
list1.Add("4");
return list1;
}
public List<string> GetList2()
{
List<string> list2 = new List<string>();
list2.Add("3");
list2.Add("4");
list2.Add("5");
list2.Add("6");
return list2;
}
第二步:定義相關方法
#region 兩個List取交集
public List<string> GetIntersection()
{
ListData ld = new ListData();
List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
List<string> result = new List<string>();
list1 = ld.GetList1();
list2 = ld.GetList2();
//注意結果一定要轉換為List型別
result = list1.Intersect(list2).ToList();
return result;
}
#endregion
#region 判斷是否有交集
public bool IsHasIntersect()
{
bool bl=false;
ListData ld = new ListData();
List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
List<string> result = new List<string>();
list1 = ld.GetList1();
list2 = ld.GetList2();
//注意結果一定要轉換為List型別
result = list1.Intersect(list2).ToList();
if (result.Count > 0)
{
bl = true;
}
return bl;
}
#endregion
#region 兩個List取並集
public List<string> GetUnion()
{
ListData ld = new ListData();
List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
List<string> result = new List<string>();
list1 = ld.GetList1();
list2 = ld.GetList2();
//注意結果一定要轉換為List型別
result = list1.Union(list2).ToList();
return result;
}
#endregion
#region 兩個List取差集
public List<string> GetSubtraction()
{
ListData ld = new ListData();
List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
List<string> result = new List<string>();
list1 = ld.GetList1();
list2 = ld.GetList2();
result = list1.Except(list2).ToList();
return result;
}
#endregion
#region 去重
public List<string> GetDistinct()
{
ListData ld = new ListData();
List<string> list1 = new List<string>();
List<string> result = new List<string>();
list1 = ld.GetList1();
result = list1.Distinct().ToList();
return result;
}
#endregion
#region 判斷一個list是否完整包含另一個list中的元素
public bool IsContain()
{
bool bl = false;
ListData ld = new ListData();
List<string> list1 = new List<string>();
list1 = ld.GetList1();
List<string> list2 = new List<string>();
list2 = ld.GetList2();
bl = list1.All(b => list2.Any(a => a.Equals(b)));
return bl;
}
#endregion
第三步:在主程式中進行實現,結果如下
是否包含:不包含
交集:{3,4}
並集:{1,2,3,4,5,6}
差集:{1,2}
去重:{1,2,3,4}