I am trying to create 3 different lists (1,2,3) from 2 existing lists (A,B).  

The 3 lists need to identify the following relationships.

* List 1 - the items that are in list A and not in list B
* List 2 - the items that are in list B and not in list A
* List 3 - the items that are in both lists.

I then want to join all the lists together into one list.

My problem is that I want to identify the differences by adding an enum identifying the relationship to the items of each list. But by adding the Enum the `Except` Linq function does not identify the fact (obviously) that the lists are the same. Because the Linq queries are differed I can not resolve this by changing the order of my statements ie. identify the the lists and then add the Enums.

This is the code that I have got to (Doesn't work properly)  

There might be a better approach.

```
        List<ManufactorListItem> manufactorItemList =
           manufactorRepository.GetManufactorList();

        // Get the Manufactors from the Families repository
        List<ManufactorListItem> familyManufactorList =
            this.familyRepository.GetManufactorList(familyGuid);

        // Identify Manufactors that are only found in the Manufactor Repository
        List<ManufactorListItem> inManufactorsOnly =
            manufactorItemList.Except(familyManufactorList).ToList();

        // Mark them as (Parent Only)
        foreach (ManufactorListItem manOnly in inManufactorsOnly) {
            manOnly.InheritanceState = EnumInheritanceState.InParent;
        }

        // Identify Manufactors that are only found in the Family Repository
        List<ManufactorListItem> inFamiliesOnly =
            familyManufactorList.Except(manufactorItemList).ToList();

        // Mark them as (Child Only)
        foreach (ManufactorListItem famOnly in inFamiliesOnly) {
            famOnly.InheritanceState = EnumInheritanceState.InChild;
        }

        // Identify Manufactors that are found in both Repositories
        List<ManufactorListItem> sameList =
            manufactorItemList.Intersect(familyManufactorList).ToList();

        // Mark them Accordingly
        foreach (ManufactorListItem same in sameList) {
            same.InheritanceState = EnumInheritanceState.InBoth;
        }

        // Create an output List
        List<ManufactorListItem> manufactors = new List<ManufactorListItem>();

        // Join all of the lists together.
        manufactors = sameList.Union(inManufactorsOnly).
            Union(inFamiliesOnly).ToList();

```

Any ideas hot to get around this?
Thanks in advance