Querying distinct values in Ballerina Query Expressions

74 Views Asked by At

Is it possible to query DISTINCT values using Ballerina Query Expressions?

string[]|error connectorProducts = from record {string product;} {product} in products
        select product;

connectorProducts should only have DISTINCT values at the end.

Thanks.

2

There are 2 best solutions below

0
MaryamZi On BEST ANSWER

This can be achieved by incorporating a group by clause.

from record {string product;} {product} in products
      group by product
      select product;

Also see

Note that there's an open spec issue to look into the possibility of adding an array:unique function as a straightforward alternative for when we just want to filter out unique members from an array.

0
Sasindu Dilshara On

There is no direct way to do this. but you can use the group by clause and do this operation like this

import ballerina/io;

record {string product;}[] products = [{ product: "a"}, { product: "b"}, { product: "a"}, { product: "c"}, { product: "a"}];

function test() {
    string[]|error connectorProducts = from record {string product;} {product} in products
        group by product
        select product;
    
    io:println(connectorProducts);
}

public function main() {
    test();
}