Forum Discussion

Dicken's avatar
Dicken
Post Prodigy
9 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
    Responsive 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!