@@ -3404,6 +3404,24 @@ static QVariant fcnArrayIntersect( const QVariantList& values, const QgsExpressi
3404
3404
return QVariant ( false );
3405
3405
}
3406
3406
3407
+
3408
+ static QVariant fcnArrayDistinct ( const QVariantList& values, const QgsExpressionContext*, QgsExpression* parent )
3409
+ {
3410
+ QVariantList array = getListValue ( values.at ( 0 ), parent );
3411
+
3412
+ QVariantList distinct;
3413
+
3414
+ for ( QVariantList::const_iterator it = array.constBegin (); it != array.constEnd (); ++it )
3415
+ {
3416
+ if ( !distinct.contains ( *it ) )
3417
+ {
3418
+ distinct += ( *it );
3419
+ }
3420
+ }
3421
+
3422
+ return distinct;
3423
+ }
3424
+
3407
3425
static QVariant fcnArrayToString ( const QVariantList& values, const QgsExpressionContext*, QgsExpression* parent )
3408
3426
{
3409
3427
QVariantList array = getListValue ( values.at ( 0 ), parent );
@@ -3872,6 +3890,7 @@ const QList<QgsExpression::Function*>& QgsExpression::Functions()
3872
3890
<< new StaticFunction ( QStringLiteral ( " array_remove_all" ), ParameterList () << Parameter ( QStringLiteral ( " array" ) ) << Parameter ( QStringLiteral ( " value" ) ), fcnArrayRemoveAll, QStringLiteral ( " Arrays" ) )
3873
3891
<< new StaticFunction ( QStringLiteral ( " array_cat" ), -1 , fcnArrayCat, QStringLiteral ( " Arrays" ) )
3874
3892
<< new StaticFunction ( QStringLiteral ( " array_intersect" ), ParameterList () << Parameter ( QStringLiteral ( " array1" ) ) << Parameter ( QStringLiteral ( " array2" ) ), fcnArrayIntersect, QStringLiteral ( " Arrays" ) )
3893
+ << new StaticFunction ( QStringLiteral ( " array_distinct" ), 1 , fcnArrayDistinct, QStringLiteral ( " Arrays" ) )
3875
3894
<< new StaticFunction ( QStringLiteral ( " array_to_string" ), ParameterList () << Parameter ( QStringLiteral ( " array" ) ) << Parameter ( QStringLiteral ( " delimiter" ), true , " ," ) << Parameter ( QStringLiteral ( " emptyvalue" ), true , " " ), fcnArrayToString, QStringLiteral ( " Arrays" ) )
3876
3895
<< new StaticFunction ( QStringLiteral ( " string_to_array" ), ParameterList () << Parameter ( QStringLiteral ( " string" ) ) << Parameter ( QStringLiteral ( " delimiter" ), true , " ," ) << Parameter ( QStringLiteral ( " emptyvalue" ), true , " " ), fcnStringToArray, QStringLiteral ( " Arrays" ) )
3877
3896
0 commit comments