Forum Discussion

Dicken's avatar
Dicken
Icon for Post Prodigy rankPost Prodigy
10 months ago
Solved

List.Remove (Matching) Items

 

 

Can someone clarify if there is any dfference between these to for examaple 

= let alist = {"a","b","b","c","d","e"} , rlist = {"b","d","c"} 
in 
List.RemoveMatchingItems( alist , rlist )

= let alist = {"a","b","b","c","d","e"} , rlist = {"b","d","c"} 
in 
List.RemoveItems( alist , rlist )

so looking at docs, it seems to suggest that with Matching only 1 "b"  would be removed, but this does not seem to be the case, 
 can anyone help with how these to differ , if they do? 

 

  • The difference is that List.RemoveMatchingItems  supports an optional equationCriteria function where you can define what "matching" means.

  • Hey!

    Like lbendlin  says with List.RemoveMatchingItems you have a little more control on how he sees matches. For example, if you have a list that randomly has some Uppercase and lowercase words, you can use a comparison criteria to make power query ignore Uppercases. See the code below:

    let
        // our list of names
        Source = {
            "Luke", "Leia",
            "C3PO", "R2D2",
            "Darth Vader", "Anakin Skywalker",
            "Leia", "Chewbacca"
        },
    
        // the list with characters we want to remove
        RemoveList = {
            "r2d2", 
            "LEia"
            },
    
    
        // with Comparer.OrdinalIgnoreCase we can ignore all the uppercase letters so he matches correctly
        Result = List.RemoveMatchingItems(
            Source, 
            RemoveList, 
            Comparer.OrdinalIgnoreCase
            )
    in
        Result

     

    Hopefully this explains it!

3 Replies

  • The difference is that List.RemoveMatchingItems  supports an optional equationCriteria function where you can define what "matching" means.

  • Chewdata's avatar
    Chewdata
    Icon for Responsive Resident rankResponsive Resident

    Hey!

    Like lbendlin  says with List.RemoveMatchingItems you have a little more control on how he sees matches. For example, if you have a list that randomly has some Uppercase and lowercase words, you can use a comparison criteria to make power query ignore Uppercases. See the code below:

    let
        // our list of names
        Source = {
            "Luke", "Leia",
            "C3PO", "R2D2",
            "Darth Vader", "Anakin Skywalker",
            "Leia", "Chewbacca"
        },
    
        // the list with characters we want to remove
        RemoveList = {
            "r2d2", 
            "LEia"
            },
    
    
        // with Comparer.OrdinalIgnoreCase we can ignore all the uppercase letters so he matches correctly
        Result = List.RemoveMatchingItems(
            Source, 
            RemoveList, 
            Comparer.OrdinalIgnoreCase
            )
    in
        Result

     

    Hopefully this explains it!