Le langage DI# implémente plusieurs méthodes qui permettent de manipuler facilement les types de bases (string, int, etc.).
En DI#, chaque valeur manipulée possède un type de données qui détermine :
les opérations possibles
les méthodes disponibles
la manière dont la valeur peut être affichée ou comparée
Bien comprendre les types permet d’éviter les erreurs courantes et d’écrire du code DI# plus robuste et maintenable.
| Déclaration | Type |
|---|---|
| string | Chaîne de caractères |
| int | Nombre entier |
| decimal | Nombre décimal |
| datetime | Date et heure |
| bool | Booléen |
| timespan | Date et heure |
| datasource | Source de données |
Par souci de compatibilité avec les champs nullable du projet ou des tables relationnelles, certains de ces types supportent d’être assignés à Null. Toutefois, il est fortement déconseillé d’instancier ou d’utiliser des types nullable dans le code, afin de limiter les risques d’échecs d’exécution.
Note : Pour certains types (int, decimal, datetime), le langage DI# supporte des limites souvent plus grandes que celles des bases de données, il serait donc possible de créer une variable avec une valeur qui ne pourra pas être enregistrée dans la base de données par la suite. Consultez la documentation des projets / tables relationnelle pour connaître les limites de la base de données.
// Exemple pour chaque type |
Texte (string)
Chaîne de caractères Unicode, où un caractère est stocké sur 2 octets. La chaîne de caractères est délimitée par des guillemets ("). À l’intérieur d’une chaîne de caractère, le symbole \ agit comme caractère d’échappement pour symboliser des caractères spéciaux comme le retour de chariot (\r), le saut de ligne (\n) et autres.
string | ||
|---|---|---|
| Propriétés ou méthodes | Type de retour | Description |
| Length | int | Obtient le nombre de caractères de l'objet String actuel. |
| Capitalize(...) | string | Permet de mettre la première lettre de la chaîne de caractères en majuscule. En passant True en paramètre, cela met en majuscule la première lettre de tous les mots de la chaîne de caractères. |
| IndexOf(...) | int | Retourne la position à laquelle la première occurrence de la chaîne de caractères passée en paramètre existe. |
| LastIndexOf(...) | int | Retourne la position à laquelle la dernière occurrence de la chaîne de caractères passée en paramètre existe. |
| Left(n) | string | Retourne autant de caractères depuis le début de l’objet string cible que le nombre entier passé en paramètre. MonTexte.Left(3) ; équivaut à MonTexte.Substring(0, 3) ; |
| Right(n) | string | Retourne autant de caractère depuis la fin de l’objet string cible que le nombre entier passé en paramètre. MonTexte.Left(3) ; équivaut à MonTexte.Substring(MonTexte.Length - 3, 3) ; |
| Replace(...) | string | Retourne un nouvel objet string dont toutes les occurrences de la chaîne de caractères passés en premier paramètre sont remplacées par la chaîne de caractères passée en second paramètre. |
| Substring(...) | string | Récupère une sous-chaîne de l’objet string ciblé. La sous-chaîne commence à une position de caractère spécifiée (si non spécifié, commence au début) et sa longueur est définie. |
| ToString(...) | string | Retourne la valeur de l’objet en chaîne de caractères. |
| ToLower() | string | Retourne la chaîne de caractères ciblée ou tous les caractères sont en minuscule. |
| ToUpper() | string | Retourne la chaîne de caractères ciblée ou tous les caractères sont en majuscule. |
| Trim() | string | Retourne la chaîne de caractères ciblée sans aucun espace avant le premier et après le dernier caractère. |
// Exemples |
Notez que les valeurs retournées par ces méthodes et propriétés sont des valeurs du type approprié et que vous pouvez donc enchaîner des appels de méthodes ou accès aux propriétés du type retourné.
[[ |
Nombre entier (int)
Nombre entier 32 bits situé entre -2 147 483 648 et 2 147 483 647.
int | ||
|---|---|---|
| Propriétés ou méthodes | Type de retour | Description |
| ToString() | string | Retourne la valeur de l’objet en chaîne de caractères. |
Nombre décimal (decimal)
Désigne tous les nombres à virgule flottante d’une très grande précision (28-29 chiffres significatifs). Le range se décrit techniquement comme suit : (-7.9x1028)/(10028) to (7.9x1028)/(10028)
decimal | ||
|---|---|---|
| Propriétés ou méthodes | Type de retour | Description |
| ToString() | string | Retourne la valeur de l’objet en chaîne de caractères. |
Date et heure (datetime)
Représente la date et l’heure au format suivant :
• aaaa.MM.jj HH:mm:ss
• aaaa.MM.jj HH:mm
• aaaa.MM.jj
Notez qu’il ne s’agit pas d’une chaîne de caractères : une date ne doit pas être mise entre guillemets. Pour l’heure, si elle est omise complètement, l’heure attribuée est 00:00:00. Il en va de même pour les secondes : si les heures et minutes sont fournies sans les secondes, 0 secondes sera attribué.
datetime | ||
|---|---|---|
| Propriétés ou méthodes | Type de retour | Description |
| AddYears(n) | DateTime | Ajoute aux années de la date ciblée le nombre passé en paramètre. |
| AddMonths(n) | DateTime | Ajoute aux mois de la date ciblée le nombre passé en paramètre. |
| AddDays(n) | DateTime | Ajoute aux jours de la date ciblée le nombre passé en paramètre. |
| AddHours(n) | DateTime | Ajoute aux heures de la date ciblée le nombre passé en paramètre. |
| AddMinutes(n) | DateTime | Ajoute aux minutes de la date ciblée le nombre passé en paramètre. |
| AddSeconds(n) | DateTime | Ajoute aux secondes de la date ciblée le nombre passé en paramètre. |
| DateDiff(d) | TimeSpan | Soustrait la date passée en paramètre à la date ciblée et retourne le résultat au format timespan. |
| isDST() | bool | Retourne vrai si la date ciblée est dans l’heure avancée d'été, basé sur la culture du contexte local. |
| ToString(...) | String | Retourne la valeur de la date ciblée sous forme d’une chaîne de caractères. Ce résultat peut être formaté dans un format précis en passant un modèle de date en paramètre. Voir : https://msdn.microsoft.com/fr-fr/library/az4se3k1(v=vs.110).aspx |
| Date | DateTime | Retourne une nouvelle date à partir de l’année, le mois et le jour de la date ciblé. Toutes les autres propriétés comme les heures, minutes, secondes, etc., sont ignorées. |
| Year | Int | Retourne l’année de la date ciblée sous forme d’un nombre entier. |
| Month | Int | Retourne le mois de la date ciblée sous forme d’un nombre entier de 1 à 12. |
| Day | Int | Retourne le jour du mois de la date ciblée sous forme d’un nombre entier de 1 à 31. |
| DayOfYear | Int | Retourne le jour de l’année à laquelle correspond la date ciblée sous forme d’un nombre entier de 1 à 365. |
| DayOfWeek | Int | Retourne le jour de la semaine à laquelle correspond la date ciblée sous forme d’un nombre entier de 1 à 7. |
| Hour | Int | Retourne le nombre d’heures de la date ciblée sous forme d’un nombre entier de 0 à 23. |
| Minute | Int | Retourne le nombre de minutes de la date ciblée sous forme d’un nombre entier de 0 à 59. |
| Second | Int | Retourne le nombre de secondes de la date ciblée sous forme d’un nombre entier de 0 à 59. |
| Ticks | Int | Retourne le nombre de graduations représentant la date et l'heure de cette instance. Une graduation représente 100 nanosecondes, ou un dix millionième de seconde. Il existe 10 000 graduations dans une milliseconde, ou les cycles de 10 millions en une seconde. |
[[ |
Booléen (bool)
Un booléen représente une valeur de vérité. Il peut valoir TRUE ou FALSE.
bool | ||
|---|---|---|
| Propriétés ou méthodes | Type de retour | Description |
| ToString() | string | Retourne la valeur de l’objet en chaîne de caractères « True » ou « False ». |
Date et heure (timespan)
Contrairement à d'autres langages, timespan, en DI#, représente une durée de temps, soit un nombre de Jours, Heures, Minutes et Secondes. Ce type existe principalement pour faire des opérations sur le type « datetime ». Exemple : timespan t = date1 – date2 ; Note : pour assigner directement une valeur, il faut noter qu’on doit fournir une valeur décimale qui représente un nombre de jours (par exemple 2.25 = 2 jours 6 heures).
| timespan | ||
|---|---|---|
| Propriétés ou méthodes | Type de retour | Description |
| ToString() | string | Retourne la valeur de l’objet en chaîne de caractères. |
Source de données (datasource)
Datasource représente n’importe quel type de données « complexes », tel que les tableaux, les collections, les listes, les dictionnaires, etc. (équivalent à var en C# par exemple).
Un tableau en DI# est en fait une carte ordonnée. Une carte est un type qui associe des valeurs à des clés. Ce type est optimisé pour différentes utilisations ; il peut être considéré comme un tableau, une liste, une table de hashage, un dictionnaire, une collection, une pile, une file d'attente et probablement plus. On peut avoir, comme valeur d'un tableau, d'autres tableaux, multidimensionnels ou non. Autrement dit, on peut instancier un tableau de n’importe quel datatype qui serait soit fixe (voir les types listés ci-dessus), soit dynamique (équivalent à List<datatype> en .NET).
On peut définir un tableau en DI# comme ceci :
{ value1, value2, value3 }
datasource myArray = { 1, 2, 3, "abc", "def" }; |
On peut définir une collection d’éléments ainsi :
{ fieldName1 : value1, fieldName2 : value2, fieldName3 : value3 }
datasource myDictionary = { Prenom : "John", Nom : "Smith", Age : 30 }; |
// Les valeurs listées sont des Expressions, dont la valeur peut elle-même contenir une expression. On peut combiner les deux comme dans cet exemple : |
Il existe 2 façons d’instancier un tableau en DI# :
- Créer un tableau de long fixe : int a[10];
- Créer un tableau de longueur variable : string b[] ;
string a[] = {"texte1", "texte2", "texte3"}; |
// On peut assigner des valeurs initiales en déclarant l'array
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
string b[] = { "texte 1", "test", "abc" };
Lorsqu’une variable est déclarée de type tableau, cette dernière ne peut accepter que des valeurs du type de données du tableau. Exemple : int a[10] n’acceptera que des int.
Les expressions de requête peuvent être utilisées pour interroger et transformer des données à partir de n'importe quelle source de données complexe. Ces requêtes servent à manipuler, trier ou filtrer un tableau (ou dictionnaire, liste, etc.). L’objectif est, à partir d’un tableau, de créer une nouvelle source de données qui :
- Filtre optionnellement le tableau original (clauses “Where”)
- Trie optionnellement le tableau original (clauses “Order by”)
- Extrait une propriété spécifique des items du tableau original
- Dédoublonne optionnellement les résultats
Notes importantes Bien que ces fonctionnalités de requête et recherche de données dans les sources disponibles, bien que très puissantes, imposent des pénalités de performance importantes. Si utilisées de manière incorrecte dans un message, par exemple, ces requêtes peuvent avoir un impact important sur la vitesse de production des messages – considérez par exemple que toute requête faite dans un message transmis à un million de contacts devra être traitée un million de fois. N’hésitez pas à communiquer avec notre équipe de support ou nos analystes pour des conseils lors de la création de messages nécessitant ce degré de complexité. |
| Enquête de requêtes | Description |
|---|---|
| Select | Sélectionner les valeurs parmi la source de données. Il est possible d’utiliser l’option distinct afin de ne sélectionner que les valeurs distinctes parmi la source de données. |
| From | Choisir sur quelle source de données la requête sera appliquée. |
| Where | Restreindre les données sélectionnées avec une clause d’inclusion ou d’exclusion. |
| Order by | Trier les données selon un ou plusieurs champs par ordre ascendant ou descendant. Mots-clés supportés :
|
Concrètement, les expressions de requêtes s’utilisent comme ceci :
select identifier.propriete3
from identifier in expression
where identifier.propriete1 = valeur
order by (identifier.propriete2 asc)
Avec :
- Expression : la structure dans laquelle on veut récupérer un élément (un tableau, une collection, etc.).
- Identifier : le nom de la variable qui va récupérer l’élément du tableau sélectionné par la clause Where.
// Supposons la source de données suivante : |