public class NoteENT
{
private float _note;
private DateTime _date;
public float Note { get { return _note; } set { _note = value; } }
public DateTime Date { get { return _date; } set { _date = value; } }
}
public class EleveENT
private string _nom;
private string _prenom;
private IEnumerable<NoteENT> _notes;
public string Nom { get { return _nom; } set { _nom = value; } }
public string Prenom { get { return _prenom; } set { _prenom = value; } }
public IEnumerable<NoteENT> Notes { get { return _notes; } set { _notes = value; } }
List<EleveENT> l = new List<EleveENT>();
EleveENT el1 = new EleveENT();
el1.Nom = "Martin";
el1.Prenom = "Michel";
List<NoteENT> nos1 = new List<NoteENT>();
NoteENT no1 = new NoteENT();
no1.Note = 3;
no1.Date = new DateTime(2006, 12, 12);
NoteENT no2 = new NoteENT();
no2.Note = 9.5f;
no2.Date = new DateTime(2007, 4, 1);
nos1.Add(no1);
nos1.Add(no2);
el1.Notes = nos1;
EleveENT el2 = new EleveENT();
el2.Nom = "Durand";
el2.Prenom = "Cyril";
List<NoteENT> nos2 = new List<NoteENT>();
NoteENT no3 = new NoteENT();
no3.Note = 17;
no3.Date = new DateTime(2006, 12, 12);
NoteENT no4 = new NoteENT();
no4.Note = 15;
no4.Date = new DateTime(2007, 4, 1);
nos2.Add(no3);
nos2.Add(no4);
el2.Notes = nos2;
l.Add(el1);
l.Add(el2);
public delegate TResult Func<TSource, TResult>(TSource source);
public static class ComplementEnumerable
public static IEnumerable<TResult> Select<TSource, TResult>(IEnumerable<TSource> source, Func<TSource, TResult> selector)
foreach (TSource s in source)
yield return selector.Invoke(s);
IEnumerable<IEnumerable<NoteENT>> t = ComplementEnumerable.Select<EleveENT, IEnumerable<NoteENT>>(l,
delegate(EleveENT c) { return c.Notes; });
IEnumerable<IEnumerable<float>> t = ComplementEnumerable.Select<EleveENT, IEnumerable<float>>(l,
delegate(EleveENT c)
return ComplementEnumerable.Select<NoteENT, float>(c.Notes, delegate(NoteENT n)
{ return n.Note; }
);
});
public static IEnumerable<TSource> Where<TSource>(IEnumerable<TSource> source, Func<TSource, bool> selector)
if (selector.Invoke(s))
yield return s;
return ComplementEnumerable.Select<NoteENT, float>(ComplementEnumerable.Where<NoteENT>(c.Notes,
delegate(NoteENT n)
{ return n.Date >= new DateTime(2007,4,1); }
), delegate(NoteENT n)
public static float Average(IEnumerable<float> source)
double num1 = 0;
long num2 = 0;
foreach (float num3 in source)
num1 += num3;
num2++;
return (float)(num1 / (double) num2);
float r = ComplementEnumerable.Average(ComplementEnumerable.Select<EleveENT, float>(l, delegate(EleveENT c)
return ComplementEnumerable.Average(ComplementEnumerable.Select<NoteENT, float>(c.Notes, delegate(NoteENT n)
));
public static float Average<TSource>(IEnumerable<TSource> Source, Func<TSource, float> selector)
return ComplementEnumerable.Average(ComplementEnumerable.Select<TSource, float>(Source, selector));
return ComplementEnumerable.Average<NoteENT>(c.Notes, delegate(NoteENT n)
float r = ComplementEnumerable.Average<EleveENT>(l, delegate(EleveENT c)
public float Note { get; set; }
public DateTime Date { get; set;}
public string Nom { get; set; }
public string Prenom { get; set; }
public IEnumerable<NoteENT> Notes { get; set; }
List<EleveENT> l = new List<EleveENT> { new EleveENT {
Nom = "Martin",
Prenom = "Michel",
Notes = new List<NoteENT> {
new NoteENT {
Note = 3,
Date = new DateTime(2006,12,12) },
Note=9.5f,
Date=new DateTime(2007,4,1)}}}
,
new EleveENT {
Nom = "Durand",
Prenom = "Cyril",
Note = 17,
Note=15,
Date= new DateTime(2007,4,1)}}
}};
double num2 = 0;
return (float)(num1 / num2);
if (source == null || selector == null)
return source;