DEV Community

Dat Ngo
Dat Ngo

Posted on

Filter list based on another list

public static List<int> FilterNotContainedUsingLoop(List<int> listToFilter, List<int> filteringList)
{
    List<int> filteredList = [];

    foreach (int item in listToFilter)
    {
        if (!filteringList.Contains(item))
            filteredList.Add(item);
    }

    return filteredList;
}


public static List<int> FilterContainedUsingWhere(List<int> listToFilter, List<int> filteringList)
{
    return listToFilter.Where(filteringList.Contains).ToList();
}

public static List<int> FilterNotContainedUsingWhere(List<int> listToFilter, List<int> filteringList)
{
    return listToFilter.Where(x => !filteringList.Contains(x)).ToList();
}
//remove duplicates
public static List<int> FilterContainedUnique(List<int> listToFilter, List<int> filteringList)
{
    return listToFilter.Where(filteringList.Contains).Distinct().ToList();
}
public static List<int> FilterNotContainedUsingExcept(List<int> listToFilter, List<int> filteringList)
{
    return listToFilter.Except(filteringList).ToList();
}
//Filtering Lists of Different Types
public static List<string> FilterStringsByInts(List<string> listToFilter, List<int> filteringList)
{
    return listToFilter.Where(x => filteringList.Contains(int.Parse(x))).ToList();
}

//Filter a List via HashSet
intsToFilter = [2, 4, 6, 8, 10, 16, 20, 28, 40, 45];
filteringIntList = [0, 10, 20, 30, 40, 50];
public static List<int> FilterUsingHashSet(List<int> listToFilter, List<int> filteringList)
{
    HashSet<int> hashToFilter = new HashSet<int>(listToFilter);
    hashToFilter.IntersectWith(filteringList);

    return hashToFilter.ToList();
}

//Using Masks to Filter a List
intsToFilter = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
List<bool> mask = [true, false, false, false];
public static List<int> FilterUsingMask(List<int> listToFilter, List<bool> mask)
{ 
    return listToFilter.Where((item, index) => mask[index % mask.Count]).ToList();
}
//1, 5, 9, 13
Enter fullscreen mode Exit fullscreen mode

Top comments (0)