Hi
You can use a method like this:
List<Form> list1, list2, list3;
SplitList(pdfdoc, out list1, out list2, out list3);
And this is the method:
public static void SplitList(List<Form> mainList, out List<Form> firstList, out List<Form> secondList, out List<Form> thirdList)
{
firstList = null;
secondList = null;
thirdList = null;
if (mainList.All(l => l.Name != "FormC") || mainList.All(l => l.Name != "FormD"))
return;
firstList = CreateList(mainList, "FormA", "FormB");
secondList = CreateList(mainList, "FormC", "FormD");
thirdList = CreateList(mainList, "FormE", "FormF", "FormG", "FormH");
}
private static List<Form> CreateList(List<Form> list, params string[] formNames)
{
var temp = new List<Form>();
foreach (var s in formNames)
{
temp.AddRange(list.Where(l => l.Name == s));
}
return temp;
}
Or, you can use this method for thirdList:
private static List<Form> CreateResidualList(List<Form> list, params List<Form>[] lists)
{
return lists.Aggregate(list, (current, listTemp) => current.Where(l => !listTemp.Contains(l)).ToList());
}
And:
thirdList = CreateResidualList(mainList, firstList, secondList);