Forum Discussion
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 ResultHopefully this explains it!
3 Replies
- lbendlinSuper User
The difference is that List.RemoveMatchingItems supports an optional equationCriteria function where you can define what "matching" means.
- DickenPost Prodigy
Thank you both ,
Richard.
- ChewdataResponsive 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 ResultHopefully this explains it!