|
|
|
|
// ========================================================================
|
|
|
|
|
//
|
|
|
|
|
// Copyright (C) 2016-2017 MARC CHEVALDONNE
|
|
|
|
|
// marc.chevaldonne.free.fr
|
|
|
|
|
//
|
|
|
|
|
// Module : Program.cs
|
|
|
|
|
// Author : Marc Chevaldonné
|
|
|
|
|
// Creation date : 2016-10-03
|
|
|
|
|
//
|
|
|
|
|
// ========================================================================
|
|
|
|
|
|
|
|
|
|
using static System.Console;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
namespace ex_031_005_LINQ_deferredExecution
|
|
|
|
|
{
|
|
|
|
|
class Program
|
|
|
|
|
{
|
|
|
|
|
static void Main(string[] args)
|
|
|
|
|
{
|
|
|
|
|
OutputEncoding = Encoding.Unicode;
|
|
|
|
|
|
|
|
|
|
List<Nounours> nounours = new List<Nounours> {
|
|
|
|
|
new Nounours("mouton", new DateTime(2009, 09, 16)),
|
|
|
|
|
new Nounours("ours", new DateTime(2009, 08, 15)),
|
|
|
|
|
new Nounours("chat", new DateTime(2009, 07, 14)),
|
|
|
|
|
new Nounours("chien", new DateTime(2009, 06, 13)),
|
|
|
|
|
new Nounours("lapin", new DateTime(2009, 05, 12)),
|
|
|
|
|
new Nounours("macaque", new DateTime(2009, 04, 11))};
|
|
|
|
|
|
|
|
|
|
//définition de la requête
|
|
|
|
|
//ATTENTION : ici, la requête est définie, mais n'est pas exécutée !
|
|
|
|
|
var filteredNounours = nounours.Where(n => n.Nom.StartsWith("c"));
|
|
|
|
|
|
|
|
|
|
//ici, nous avons besoin du résultat de la requête, donc elle est exécutée maintenant
|
|
|
|
|
//c'est l'exécution différée
|
|
|
|
|
WriteLine("1ère exécution de la requête");
|
|
|
|
|
foreach (var n in filteredNounours)
|
|
|
|
|
{
|
|
|
|
|
WriteLine($"\t{n.Nom}");
|
|
|
|
|
}
|
|
|
|
|
WriteLine();
|
|
|
|
|
|
|
|
|
|
//on ajoute un nouveau nounours
|
|
|
|
|
nounours.Add(new Nounours("canari", DateTime.Today));
|
|
|
|
|
|
|
|
|
|
//notez qu'ici, nous ne redéfinissons pas la requête,
|
|
|
|
|
//elle est juste exécutée à nouveau, mais comme la collection sur laquelle elle est construite a changé,
|
|
|
|
|
//alors le résultat de la requête également
|
|
|
|
|
//=> exécution différée
|
|
|
|
|
WriteLine("2ème exécution de la requête");
|
|
|
|
|
foreach (var n in filteredNounours)
|
|
|
|
|
{
|
|
|
|
|
WriteLine($"\t{n.Nom}");
|
|
|
|
|
}
|
|
|
|
|
WriteLine();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|