Using elements of Intersection of Sets to compare multiple versions of files

Hi All.

I’m attempting to compare a list of existing file versions to a list of “unapproved” versions.

My Set query runs perfectly with an existing string:

q: exists elements of intersection of (set of (“5.2.3.0”;“5.3.14.0”;“5.3.8.0”); set of (“5.3.17.0”;“5.3.16.0”;“5.3.15.0”;“5.3.14.0”;“5.3.13.0”;“5.3.12.0”;“5.3.11.0”;“5.3.10.0”;“5.3.9.0”;“5.3.8.0”;“5.3.7.0”;“5.3.6.0”;“5.3.5.0”;“5.3.4.0”;“5.3.3.0”;“5.3.2.0”;“5.3.1.0”;“5.3.0.0”;“5.2.19.0”;“5.2.18.0”;“5.2.17.0”;“5.2.16.0”;“5.2.15.0”;“5.2.14.0”;“5.2.13.0”;“5.2.12.0”;“5.2.11.0”;“5.2.10.0”;“5.2.9.0”;“5.2.8.0”;".0";“5.2.7.0”;“5.2.6.0”;“5.2.5.0”;“5.2.4.0”;“5.2.3.0”;“5.2.2.0”;“5.2.1.0”;“5.2.0.0”))
A: True
T: 0.342 ms
I: singular boolean

When I attempt to substitute relevance that generates that first string, I get a FALSE answer (paths redacted):

q: ("%22" & (concatenation “%22;%22” of it of (((names of files whose (name of it as string as lowercase starts with “xxxxxx” AND name of it as string as lowercase ends with “.xxx”) of folders of folders “xxx\xxx\xxx\xxx\xxx” of folders of folder “C:\temp\test\users”) as version) as string)) & “%22”)
A: “5.2.3.0”;“5.3.14.0”;"5.3.8.0"
T: 16.587 ms
I: singular string

q: elements of (set of("%22" & (concatenation “%22;%22” of it of (((names of files whose (name of it as string as lowercase starts with “xxxxxx” AND name of it as string as lowercase ends with “.xxx”) of folders of folders “xxx\xxx\xxx\xxx\xxx” of folders of folder “C:\temp\test\users”) as version) as string)) & “%22”))
A: “5.2.3.0”;“5.3.14.0”;"5.3.8.0"
T: 13.104 ms
I: plural string

q: exists elements of intersection of ((set of ( ("%22" & (concatenation “%22;%22” of it of (((names of files whose (name of it as string as lowercase starts with “xxxxxx” AND name of it as string as lowercase ends with “.xxx”) of folders of folders “xxx\xxx\xxx\xxx\xxx” of folders of folder “C:\temp\test\users”) as version) as string)) & “%22”)) ); set of (“5.3.17.0”;“5.3.16.0”;“5.3.15.0”;“5.3.14.0”;“5.3.13.0”;“5.3.12.0”;“5.3.11.0”;“5.3.10.0”;“5.3.9.0”;“5.3.8.0”;“5.3.7.0”;“5.3.6.0”;“5.3.5.0”;“5.3.4.0”;“5.3.3.0”;“5.3.2.0”;“5.3.1.0”;“5.3.0.0”;“5.2.19.0”;“5.2.18.0”;“5.2.17.0”;“5.2.16.0”;“5.2.15.0”;“5.2.14.0”;“5.2.13.0”;“5.2.12.0”;“5.2.11.0”;“5.2.10.0”;“5.2.9.0”;“5.2.8.0”;".0";“5.2.7.0”;“5.2.6.0”;“5.2.5.0”;“5.2.4.0”;“5.2.3.0”;“5.2.2.0”;“5.2.1.0”;“5.2.0.0”))
A: False
T: 12.406 ms
I: singular boolean

What could I be doing wrong? I’ve tried many iterations of quotes, no quotes, as string, etc.

Thanks in advance.

Jim

@jpdonlin – the main issue is in your second query. Once you get a list of names (that look like versions), that list in itself is a list of strings that you can create a set from. Once you concatenate them with “%22;%22”, you are creating a set of a single string item that looks like:

“5.2.3.0”;“5.3.14.0”;"5.3.8.0"

Instead, try this for your second query:

set of ( (it as version as string) of names whose (exists (it as version) AND (it starts with "xxxxxx" AND it ends with ".xxx") of (it as lowercase)) of files of folders of folders "xxx\xxx\xxx\xxx\xxx" of folders of folder "C:\temp\test\users")

Hope that helps!

1 Like