public static class Enumerable
{
// Methods
public static TSource
Aggregate<TSource>(this IEnumerable <TSource> source, Func <TSource,
TSource, TSource> func);
public static TAccumulate Aggregate<TSource,
TAccumulate>(this IEnumerable <TSource> source, TAccumulate seed, Func <TAccumulate, TSource, TAccumulate> func);
public static TResult Aggregate<TSource,
TAccumulate, TResult>(this IEnumerable <TSource> source, TAccumulate seed, Func <TAccumulate, TSource, TAccumulate> func, Func <TAccumulate, TResult> resultSelector);
public static bool All<TSource>(this IEnumerable <TSource> source, Func <TSource, bool > predicate);
public static bool Any<TSource>(this IEnumerable <TSource> source);
public static bool Any<TSource>(this IEnumerable <TSource> source, Func <TSource, bool > predicate);
public static IEnumerable <TSource> AsEnumerable<TSource>(this IEnumerable <TSource>
source);
public static decimal Average(this IEnumerable <decimal > source);
public static decimal ? Average(this IEnumerable <decimal ?>
source);
public static double ? Average(this IEnumerable <double ?> source);
public static double ? Average(this IEnumerable <int ?> source);
public static double ? Average(this IEnumerable <long ?> source);
public static float ? Average(this IEnumerable <float ?> source);
public static double Average(this IEnumerable <double > source);
public static double Average(this IEnumerable <int > source);
public static double Average(this IEnumerable <long > source);
public static float Average(this IEnumerable <float > source);
public static decimal Average<TSource>(this IEnumerable <TSource> source, Func <TSource, decimal > selector);
public static double Average<TSource>(this IEnumerable <TSource> source, Func <TSource, double > selector);
public static double Average<TSource>(this IEnumerable <TSource> source, Func <TSource, int > selector);
public static double Average<TSource>(this IEnumerable <TSource> source, Func <TSource, long > selector);
public static decimal ? Average<TSource>(this IEnumerable <TSource> source, Func <TSource, decimal ?> selector);
public static double ? Average<TSource>(this IEnumerable <TSource> source, Func <TSource, double ?> selector);
public static double ? Average<TSource>(this IEnumerable <TSource> source, Func <TSource, int ?> selector);
public static double ? Average<TSource>(this IEnumerable <TSource> source, Func <TSource, long ?> selector);
public static float ? Average<TSource>(this IEnumerable <TSource> source, Func <TSource, float ?> selector);
public static float Average<TSource>(this IEnumerable <TSource> source, Func <TSource, float > selector);
public static IEnumerable <TResult> Cast<TResult>(this IEnumerable source);
private static IEnumerable <TResult> CastIterator<TResult>(IEnumerable source);
public static IEnumerable <TSource> Concat<TSource>(this IEnumerable <TSource> first,
IEnumerable <TSource> second);
private static IEnumerable <TSource> ConcatIterator<TSource>(IEnumerable <TSource> first, IEnumerable <TSource> second);
public static bool Contains<TSource>(this IEnumerable <TSource> source, TSource value);
public static bool Contains<TSource>(this IEnumerable <TSource> source, TSource value, IEqualityComparer <TSource> comparer);
public static int Count<TSource>(this IEnumerable <TSource> source);
public static int Count<TSource>(this IEnumerable <TSource> source, Func <TSource, bool > predicate);
public static IEnumerable <TSource> DefaultIfEmpty<TSource>(this IEnumerable <TSource>
source);
public static IEnumerable <TSource> DefaultIfEmpty<TSource>(this IEnumerable <TSource>
source, TSource defaultValue);
private static IEnumerable <TSource> DefaultIfEmptyIterator<TSource>(IEnumerable <TSource> source, TSource
defaultValue);
public static IEnumerable <TSource> Distinct<TSource>(this IEnumerable <TSource>
source);
public static IEnumerable <TSource> Distinct<TSource>(this IEnumerable <TSource> source,
IEqualityComparer <TSource> comparer);
private static IEnumerable <TSource> DistinctIterator<TSource>(IEnumerable <TSource> source, IEqualityComparer <TSource> comparer);
public static TSource
ElementAt<TSource>(this IEnumerable <TSource> source, int index);
public static TSource
ElementAtOrDefault<TSource>(this IEnumerable <TSource> source, int
index);
public static IEnumerable <TResult> Empty<TResult>();
public static IEnumerable <TSource> Except<TSource>(this IEnumerable <TSource> first,
IEnumerable <TSource> second);
public static IEnumerable <TSource> Except<TSource>(this IEnumerable <TSource> first,
IEnumerable <TSource> second, IEqualityComparer <TSource> comparer);
private static IEnumerable <TSource> ExceptIterator<TSource>(IEnumerable <TSource> first, IEnumerable <TSource> second, IEqualityComparer <TSource> comparer);
public static TSource
First<TSource>(this IEnumerable <TSource> source);
public static TSource
First<TSource>(this IEnumerable <TSource> source, Func <TSource,
bool > predicate);
public static TSource
FirstOrDefault<TSource>(this IEnumerable <TSource> source);
public static TSource
FirstOrDefault<TSource>(this IEnumerable <TSource> source, Func <TSource, bool > predicate);
public static IEnumerable <IGrouping <TKey, TSource>> GroupBy<TSource, TKey>(this
IEnumerable <TSource> source, Func <TSource, TKey> keySelector);
public static IEnumerable <IGrouping <TKey, TSource>> GroupBy<TSource, TKey>(this
IEnumerable <TSource> source, Func <TSource, TKey> keySelector, IEqualityComparer <TKey> comparer);
public static IEnumerable <IGrouping <TKey, TElement>> GroupBy<TSource, TKey, TElement>(this
IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector);
public static IEnumerable <TResult> GroupBy<TSource, TKey, TResult>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TKey,
IEnumerable <TSource>, TResult> resultSelector);
public static IEnumerable <IGrouping <TKey, TElement>> GroupBy<TSource, TKey, TElement>(this
IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, IEqualityComparer <TKey> comparer);
public static IEnumerable <TResult> GroupBy<TSource, TKey, TElement, TResult>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource,
TElement> elementSelector, Func <TKey, IEnumerable <TElement>, TResult> resultSelector);
public static IEnumerable <TResult> GroupBy<TSource, TKey, TResult>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TKey,
IEnumerable <TSource>, TResult> resultSelector, IEqualityComparer <TKey> comparer);
public static IEnumerable <TResult> GroupBy<TSource, TKey, TElement, TResult>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource,
TElement> elementSelector, Func <TKey, IEnumerable <TElement>, TResult> resultSelector, IEqualityComparer <TKey> comparer);
public static IEnumerable <TResult> GroupJoin<TOuter, TInner, TKey, TResult>(this IEnumerable <TOuter> outer, IEnumerable <TInner> inner, Func <TOuter, TKey>
outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, IEnumerable <TInner>, TResult> resultSelector);
public static IEnumerable <TResult> GroupJoin<TOuter, TInner, TKey, TResult>(this IEnumerable <TOuter> outer, IEnumerable <TInner> inner, Func <TOuter, TKey>
outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, IEnumerable <TInner>, TResult> resultSelector, IEqualityComparer <TKey> comparer);
private static IEnumerable <TResult> GroupJoinIterator<TOuter, TInner, TKey, TResult>(IEnumerable <TOuter> outer, IEnumerable <TInner> inner, Func <TOuter, TKey> outerKeySelector, Func <TInner,
TKey> innerKeySelector, Func <TOuter, IEnumerable <TInner>, TResult> resultSelector, IEqualityComparer <TKey> comparer);
public static IEnumerable <TSource> Intersect<TSource>(this IEnumerable <TSource> first,
IEnumerable <TSource> second);
public static IEnumerable <TSource> Intersect<TSource>(this IEnumerable <TSource> first,
IEnumerable <TSource> second, IEqualityComparer <TSource> comparer);
private static IEnumerable <TSource> IntersectIterator<TSource>(IEnumerable <TSource> first, IEnumerable <TSource> second, IEqualityComparer <TSource> comparer);
public static IEnumerable <TResult> Join<TOuter, TInner, TKey, TResult>(this IEnumerable <TOuter> outer, IEnumerable <TInner> inner, Func <TOuter, TKey>
outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, TInner, TResult>
resultSelector);
public static IEnumerable <TResult> Join<TOuter, TInner, TKey, TResult>(this IEnumerable <TOuter> outer, IEnumerable <TInner> inner, Func <TOuter, TKey>
outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, TInner, TResult> resultSelector,
IEqualityComparer <TKey> comparer);
private static IEnumerable <TResult> JoinIterator<TOuter, TInner, TKey, TResult>(IEnumerable <TOuter> outer, IEnumerable <TInner> inner, Func <TOuter, TKey> outerKeySelector, Func <TInner,
TKey> innerKeySelector, Func <TOuter, TInner, TResult> resultSelector, IEqualityComparer <TKey>
comparer);
public static TSource
Last<TSource>(this IEnumerable <TSource> source);
public static TSource
Last<TSource>(this IEnumerable <TSource> source, Func <TSource,
bool > predicate);
public static TSource
LastOrDefault<TSource>(this IEnumerable <TSource> source);
public static TSource
LastOrDefault<TSource>(this IEnumerable <TSource> source, Func <TSource, bool > predicate);
public static long LongCount<TSource>(this IEnumerable <TSource> source);
public static long LongCount<TSource>(this IEnumerable <TSource> source, Func <TSource, bool > predicate);
public static decimal Max(this IEnumerable <decimal > source);
public static double ? Max(this IEnumerable <double ?> source);
public static double Max(this IEnumerable <double > source);
public static int ? Max(this IEnumerable <int ?> source);
public static long ? Max(this IEnumerable <long ?> source);
public static int Max(this IEnumerable <int > source);
public static decimal ? Max(this IEnumerable <decimal ?> source);
public static TSource
Max<TSource>(this IEnumerable <TSource> source);
public static long Max(this IEnumerable <long > source);
public static float ? Max(this IEnumerable <float ?> source);
public static float Max(this IEnumerable <float > source);
public static decimal Max<TSource>(this IEnumerable <TSource> source, Func <TSource, decimal > selector);
public static double Max<TSource>(this IEnumerable <TSource> source, Func <TSource, double > selector);
public static decimal ? Max<TSource>(this IEnumerable <TSource> source, Func <TSource, decimal ?> selector);
public static double ? Max<TSource>(this IEnumerable <TSource> source, Func <TSource, double ?> selector);
public static int Max<TSource>(this IEnumerable <TSource> source, Func <TSource, int > selector);
public static TResult Max<TSource,
TResult>(this IEnumerable <TSource> source, Func <TSource, TResult>
selector);
public static int ? Max<TSource>(this IEnumerable <TSource> source, Func <TSource, int ?> selector);
public static long ? Max<TSource>(this IEnumerable <TSource> source, Func <TSource, long ?> selector);
public static long Max<TSource>(this IEnumerable <TSource> source, Func <TSource, long > selector);
public static float ? Max<TSource>(this IEnumerable <TSource> source, Func <TSource, float ?> selector);
public static float Max<TSource>(this IEnumerable <TSource> source, Func <TSource, float > selector);
public static decimal Min(this IEnumerable <decimal > source);
public static double Min(this IEnumerable <double > source);
public static decimal ? Min(this IEnumerable <decimal ?> source);
public static double ? Min(this IEnumerable <double ?> source);
public static TSource
Min<TSource>(this IEnumerable <TSource> source);
public static int ? Min(this IEnumerable <int ?> source);
public static long ? Min(this IEnumerable <long ?> source);
public static float ? Min(this IEnumerable <float ?> source);
public static int Min(this IEnumerable <int > source);
public static long Min(this IEnumerable <long > source);
public static float Min(this IEnumerable <float > source);
public static decimal Min<TSource>(this IEnumerable <TSource> source, Func <TSource, decimal > selector);
public static double Min<TSource>(this IEnumerable <TSource> source, Func <TSource, double > selector);
public static long ? Min<TSource>(this IEnumerable <TSource> source, Func <TSource, long ?> selector);
public static int Min<TSource>(this IEnumerable <TSource> source, Func <TSource, int > selector);
public static double ? Min<TSource>(this IEnumerable <TSource> source, Func <TSource, double ?> selector);
public static float ? Min<TSource>(this IEnumerable <TSource> source, Func <TSource, float ?> selector);
public static long Min<TSource>(this IEnumerable <TSource> source, Func <TSource, long > selector);
public static decimal ? Min<TSource>(this IEnumerable <TSource> source, Func <TSource, decimal ?> selector);
public static int ? Min<TSource>(this IEnumerable <TSource> source, Func <TSource, int ?> selector);
public static float Min<TSource>(this IEnumerable <TSource> source, Func <TSource, float > selector);
public static TResult Min<TSource,
TResult>(this IEnumerable <TSource> source, Func <TSource, TResult>
selector);
public static IEnumerable <TResult> OfType<TResult>(this IEnumerable source);
private static IEnumerable <TResult> OfTypeIterator<TResult>(IEnumerable source);
public static IOrderedEnumerable <TSource> OrderBy<TSource, TKey>(this IEnumerable <TSource>
source, Func <TSource, TKey> keySelector);
public static IOrderedEnumerable <TSource> OrderBy<TSource, TKey>(this IEnumerable <TSource>
source, Func <TSource, TKey> keySelector, IComparer <TKey> comparer);
public static IOrderedEnumerable <TSource> OrderByDescending<TSource, TKey>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector);
public static IOrderedEnumerable <TSource> OrderByDescending<TSource, TKey>(this IEnumerable <TSource> source,
Par Romagny13
0
-
Recommander
public static IEnumerable <int > Range(int start, int count);
private static IEnumerable <int > RangeIterator(int start, int
count);
public static IEnumerable <TResult> Repeat<TResult>(TResult element, int count);
private static IEnumerable <TResult> RepeatIterator<TResult>(TResult element, int count);
public static IEnumerable <TSource> Reverse<TSource>(this IEnumerable <TSource>
source);
private static IEnumerable <TSource> ReverseIterator<TSource>(IEnumerable <TSource> source);
public static IEnumerable <TResult> Select<TSource, TResult>(this IEnumerable <TSource>
source, Func <TSource, TResult> selector);
public static IEnumerable <TResult> Select<TSource, TResult>(this IEnumerable <TSource>
source, Func <TSource, int , TResult> selector);
private static IEnumerable <TResult> SelectIterator<TSource, TResult>(IEnumerable <TSource> source, Func <TSource, TResult> selector);
private static IEnumerable <TResult> SelectIterator<TSource, TResult>(IEnumerable <TSource> source, Func <TSource, int , TResult> selector);
public static IEnumerable <TResult> SelectMany<TSource, TResult>(this IEnumerable <TSource>
source, Func <TSource, IEnumerable <TResult>> selector);
public static IEnumerable <TResult> SelectMany<TSource, TResult>(this IEnumerable <TSource>
source, Func <TSource, int , IEnumerable <TResult>> selector);
public static IEnumerable <TResult> SelectMany<TSource, TCollection, TResult>(this IEnumerable <TSource> source, Func <TSource, IEnumerable <TCollection>>
collectionSelector, Func <TSource, TCollection, TResult> resultSelector);
public static IEnumerable <TResult> SelectMany<TSource, TCollection, TResult>(this IEnumerable <TSource> source, Func <TSource, int , IEnumerable <TCollection>> collectionSelector, Func <TSource, TCollection, TResult> resultSelector);
private static IEnumerable <TResult> SelectManyIterator<TSource, TResult>(IEnumerable <TSource> source, Func <TSource, IEnumerable <TResult>> selector);
private static IEnumerable <TResult> SelectManyIterator<TSource, TResult>(IEnumerable <TSource> source, Func <TSource, int , IEnumerable <TResult>> selector);
private static IEnumerable <TResult> SelectManyIterator<TSource, TCollection, TResult>(IEnumerable <TSource> source,
Func <TSource, IEnumerable <TCollection>> collectionSelector, Func <TSource, TCollection, TResult> resultSelector);
private static IEnumerable <TResult> SelectManyIterator<TSource, TCollection, TResult>(IEnumerable <TSource> source,
Func <TSource, int , IEnumerable <TCollection>> collectionSelector,
Func <TSource, TCollection, TResult> resultSelector);
public static bool SequenceEqual<TSource>(this IEnumerable <TSource> first, IEnumerable <TSource> second);
public static bool SequenceEqual<TSource>(this IEnumerable <TSource> first, IEnumerable <TSource> second, IEqualityComparer <TSource> comparer);
public static TSource
Single<TSource>(this IEnumerable <TSource> source);
public static TSource
Single<TSource>(this IEnumerable <TSource> source, Func <TSource,
bool > predicate);
public static TSource
SingleOrDefault<TSource>(this IEnumerable <TSource> source);
public static TSource
SingleOrDefault<TSource>(this IEnumerable <TSource> source, Func <TSource, bool > predicate);
public static IEnumerable <TSource> Skip<TSource>(this IEnumerable <TSource> source,
int count);
private static IEnumerable <TSource> SkipIterator<TSource>(IEnumerable <TSource> source, int
count);
public static IEnumerable <TSource> SkipWhile<TSource>(this IEnumerable <TSource> source,
Func <TSource, bool > predicate);
public static IEnumerable <TSource> SkipWhile<TSource>(this IEnumerable <TSource> source,
Func <TSource, int , bool > predicate);
private static IEnumerable <TSource> SkipWhileIterator<TSource>(IEnumerable <TSource> source, Func <TSource, bool > predicate);
private static IEnumerable <TSource> SkipWhileIterator<TSource>(IEnumerable <TSource> source, Func <TSource, int , bool > predicate);
public static double Sum(this IEnumerable <double > source);
public static decimal ? Sum(this IEnumerable <decimal ?> source);
public static decimal Sum(this IEnumerable <decimal > source);
public static int Sum(this IEnumerable <int > source);
public static long Sum(this IEnumerable <long > source);
public static double ? Sum(this IEnumerable <double ?> source);
public static int ? Sum(this IEnumerable <int ?> source);
public static long ? Sum(this IEnumerable <long ?> source);
public static float ? Sum(this IEnumerable <float ?> source);
public static float Sum(this IEnumerable <float > source);
public static decimal ? Sum<TSource>(this IEnumerable <TSource> source, Func <TSource, decimal ?> selector);
public static double ? Sum<TSource>(this IEnumerable <TSource> source, Func <TSource, double ?> selector);
public static decimal Sum<TSource>(this IEnumerable <TSource> source, Func <TSource, decimal > selector);
public static int ? Sum<TSource>(this IEnumerable <TSource> source, Func <TSource, int ?> selector);
public static double Sum<TSource>(this IEnumerable <TSource> source, Func <TSource, double > selector);
public static int Sum<TSource>(this IEnumerable <TSource> source, Func <TSource, int > selector);
public static long Sum<TSource>(this IEnumerable <TSource> source, Func <TSource, long > selector);
public static long ? Sum<TSource>(this IEnumerable <TSource> source, Func <TSource, long ?> selector);
public static float ? Sum<TSource>(this IEnumerable <TSource> source, Func <TSource, float ?> selector);
public static float Sum<TSource>(this IEnumerable <TSource> source, Func <TSource, float > selector);
public static IEnumerable <TSource> Take<TSource>(this IEnumerable <TSource> source,
int count);
private static IEnumerable <TSource> TakeIterator<TSource>(IEnumerable <TSource> source, int
count);
public static IEnumerable <TSource> TakeWhile<TSource>(this IEnumerable <TSource> source,
Func <TSource, bool > predicate);
public static IEnumerable <TSource> TakeWhile<TSource>(this IEnumerable <TSource> source,
Func <TSource, int , bool > predicate);
private static IEnumerable <TSource> TakeWhileIterator<TSource>(IEnumerable <TSource> source, Func <TSource, bool > predicate);
private static IEnumerable <TSource> TakeWhileIterator<TSource>(IEnumerable <TSource> source, Func <TSource, int , bool > predicate);
public static IOrderedEnumerable <TSource> ThenBy<TSource, TKey>(this IOrderedEnumerable <TSource> source, Func <TSource, TKey> keySelector);
public static IOrderedEnumerable <TSource> ThenBy<TSource, TKey>(this IOrderedEnumerable <TSource> source, Func <TSource, TKey> keySelector, IComparer <TKey> comparer);
public static IOrderedEnumerable <TSource> ThenByDescending<TSource, TKey>(this IOrderedEnumerable <TSource> source, Func <TSource, TKey> keySelector);
public static IOrderedEnumerable <TSource> ThenByDescending<TSource, TKey>(this IOrderedEnumerable <TSource> source, Func <TSource, TKey> keySelector, IComparer <TKey> comparer);
public static TSource[]
ToArray<TSource>(this IEnumerable <TSource> source);
public static Dictionary <TKey, TSource> ToDictionary<TSource, TKey>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector);
public static Dictionary <TKey, TSource> ToDictionary<TSource, TKey>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, IEqualityComparer <TKey> comparer);
public static Dictionary <TKey, TElement> ToDictionary<TSource, TKey, TElement>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource,
TElement> elementSelector);
public static Dictionary <TKey, TElement> ToDictionary<TSource, TKey, TElement>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource,
TElement> elementSelector, IEqualityComparer <TKey> comparer);
public static List <TSource> ToList<TSource>(this IEnumerable <TSource> source);
public static ILookup <TKey, TSource> ToLookup<TSource, TKey>(this IEnumerable <TSource>
source, Func <TSource, TKey> keySelector);
public static ILookup <TKey, TSource> ToLookup<TSource, TKey>(this IEnumerable <TSource>
source, Func <TSource, TKey> keySelector, IEqualityComparer <TKey> comparer);
public static ILookup <TKey, TElement> ToLookup<TSource, TKey, TElement>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource,
TElement> elementSelector);
public static ILookup <TKey, TElement> ToLookup<TSource, TKey, TElement>(this IEnumerable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource,
TElement> elementSelector, IEqualityComparer <TKey> comparer);
public static IEnumerable <TSource> Union<TSource>(this IEnumerable <TSource> first,
IEnumerable <TSource> second);
public static IEnumerable <TSource> Union<TSource>(this IEnumerable <TSource> first,
IEnumerable <TSource> second, IEqualityComparer <TSource> comparer);
private static IEnumerable <TSource> UnionIterator<TSource>(IEnumerable <TSource> first, IEnumerable <TSource> second, IEqualityComparer <TSource> comparer);
public static IEnumerable <TSource> Where<TSource>(this IEnumerable <TSource> source,
Func <TSource, bool > predicate);
public static IEnumerable <TSource> Where<TSource>(this IEnumerable <TSource> source,
Func <TSource, int , bool > predicate);
private static IEnumerable <TSource> WhereIterator<TSource>(IEnumerable <TSource> source, Func <TSource, bool > predicate);
private static IEnumerable <TSource> WhereIterator<TSource>(IEnumerable <TSource> source, Func <TSource, int , bool > predicate);
}
http://msdn2.microsoft.com/en-us/library/system.linq.enumerable_members(VS.90).aspx
System.linq.Queryable
http://msdn2.microsoft.com/en-us/library/system.linq.queryable_members(VS.90).aspx
System.linq.Expressions.Expression http://msdn2.microsoft.com/en-us/library/system.linq.expressions.expression_members(VS.90).aspx
Passer d’un IQueryable à un IEnumerable
Pour éviter qu’une requête Linq To SQL ne soit exécutée depuis l’interface il suffit des retourner un IEnumerable,ainsi la requete sera executée en Linq To Objects
Exemple :
Couche DAL
public class ContactDAO
{
public static IQueryable <Contact > GetContacts()
{
ContactDataContext contactDataContext = new ContactDataContext ("Data Source=.;Initial Catalog=ContactDB;Integrated
Security=SSPI;" );
return contactDataContext.Contacts;
}
}
Couche BusinessObjects
public IEnumerable <Contact > GetContacts()
{
return ContactDAO .GetContacts();
}
Couche Gui
IEnumerable <Contact > Contacts;
private void button1_Click(object sender, EventArgs e)
{
BLL bLL = new
BLL ();
// 1 requete Linq To SQL
Contacts = bLL.GetContacts().ToList();
// 2 requete Linq To Objects(filtre et tri sur la couche
businessObjects)
// si j'avais retourné un IQueryable depuis la couche
BusinessObjects
// la requete aurait été du Linq To SQL
var Query =
from c in Contacts
where
c.Contactname.StartsWith("B" )
orderby c.Contactname
select c;
dataGridView1.DataSource = Query.ToList();
}
les méthodes
AsEnumerable() AsQueryable() permettent également de passer de l'un à l'autre
exemple (dans le cas ou Contacts serait un IQueryable) :
IEnumerable < Contact > q = Contacts.AsEnumerable< Contact >();
Par Romagny13
0
-
Recommander
Par Romagny13
0
-
Recommander
DynamicExpression – un projet du package d’exemples de Orcas - mieux comprendre "la mécanique" de Linq et des
expressions
Dans les exemples fournis pour Orcas sur le site MSDN
Il y a un projet assez interessant(tous le sont :p)
DynamicExpression il permet de mieux comprendre la « mécanique » de Linq pour la création d’expressions (Lambda entre autres) , enfin à condition bien sur
de regarder dans le code
Exemple :
var query =
db.Customers.
Where("City = @0 and Orders.Count >= @1", "London" , 10).
OrderBy("CompanyName" ).
Select("new(CompanyName as Name, Phone)" );
Autre exemple avec paramètre :
Je sélectionne tous les contacts dont l’age est supérieur à 20
var Query =
oContactDataContext.Contacts.Where("ContactAge > @0" , 20)
.OrderBy("ContactName" );
En fait chaque « clause » (Whrere,OrderBy,Select,etc. est parsée afin de générer l’expression lambda correspondante), interessant même presque trop on
se rend compte comment l’ensemble marche, pour moi il y a beaucoup trop de reflexion d’utilisée
Par Romagny13
0
-
Recommander
[C# 3] - Mon début de créations d’expressions permettant de faire du MOR (mapping objet relationnnel)
Bon c’est un début mais il y a quand même quelques bases J
Je crées 2 méthodes d’extensions :
- Une GetList<T>() simple retournnant l’ensemble des lignes de la
table correspondant à la classe passée
- Une GetList<T>() permettant de faire un filtre par l’intermediaire
d’une classe nommée « stringPredicate » (peut etre certains voient de quelle classe je parle ;) s’ils ont téléchargés quelques unes des sources que j’ai posté sur Codeplex ou
CodeS-SourceS)
Bon on est d’accord le code et la structuration est vraiment à améliorer mais l’idée est la
On peut tout à fait imaginer avoir des attributs personnalisés pour faire le mapping entre le nom des champs des tables et des properties des classes
En 1 > je construis la requete SQL
En 2 > j’execute la requete (ici avec un DbDataReader)
En 3> je rempli petit à petit la liste generic à renvoyer avec les données reçues par le DbDataReader
public static class MORExpression
{
private static string _SQLQuery;
public static string SQLQuery
{
get { return _SQLQuery;
}
set { _SQLQuery = value ;
}
}
public static List <T> GetList<T>(this IEnumerable <T> source)
{
int nPosition = 0;
T Class = (T)Activator .CreateInstance<T>();
PropertyInfo [] Properties = Class.GetType().GetProperties();
// 1 build SQL
SQLQuery = "SELECT " ;
foreach (PropertyInfo
Property in Class.GetType().GetProperties())
if (nPosition == 0)
{
SQLQuery += Property.Name;
nPosition += 1;
}
else
SQLQuery += "," + Property.Name;
SQLQuery += " FROM " + Class.GetType().Name;
// 2 Execute Query
DbProviderHelper .CreateConnection();
DbDataReader oDbDataReader = DbProviderHelper .ExecuteReader(DbProviderHelper .CreateCommand(SQLQuery, DbProviderHelper .DbConnection, System.Data.CommandType .Text));
// Fill List<T>
List <T> result = new List <T>();
while (oDbDataReader.Read())
{
T NewT =(T) Activator .CreateInstance(Class.GetType());
foreach (PropertyInfo Property in Properties)
{
if
(oDbDataReader[Property.Name] != DBNull .Value)
Property.SetValue(NewT, oDbDataReader[Property.Name], null );
}
result.Add(NewT);
}
return result;
}
public static List <T> GetList<T>(this IEnumerable <T> source,stringPredicate Predicate)
{
int nPosition = 0;
T Class = (T)Activator .CreateInstance<T>();
PropertyInfo [] Properties = Class.GetType().GetProperties();
// 1 build SQL
SQLQuery = "SELECT " ;
foreach (PropertyInfo
Property in Class.GetType().GetProperties())
if (nPosition == 0)
{
SQLQuery += Property.Name;
nPosition += 1;
}
else
SQLQuery += "," + Property.Name;
SQLQuery += " FROM " + Class.GetType().Name;
switch (Predicate.Condition)
{
case stringCondition .StartsWith:
SQLQuery += "
WHERE " + Predicate.Property + " LIKE '" + Predicate.Value + "%'" ;
break ;
}
// 2 Execute Query
DbProviderHelper .CreateConnection();
DbDataReader oDbDataReader = DbProviderHelper .ExecuteReader(DbProviderHelper .CreateCommand(SQLQuery, DbProviderHelper .DbConnection, System.Data.CommandType .Text));
// Fill List<T>
List <T> result = new List <T>();
while (oDbDataReader.Read())
{
T NewT = (T)Activator .CreateInstance(Class.GetType());
foreach (PropertyInfo Property in Properties)
{
if
(oDbDataReader[Property.Name] != DBNull .Value)
Property.SetValue(NewT, oDbDataReader[Property.Name], null );
}
result.Add(NewT);
}
return result;
}
Utilisation :
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = Contacts.GetList<CONTACT >();
dataGridView2.DataSource = Contacts.GetList<CONTACT >(new stringPredicate (stringCondition .StartsWith, "nom_contact" , "a" ));
}
Par Romagny13
0
-
Recommander
Créer des « expressions » en .NET 3.0 et .NET 2.0 comme Linq
En .NET 3.0
je fais 2 méthodes d’extension (C#3.0)
- L’une permet de filtrer (MORFilter)
- L’autre permet de trier (MOROrder)
Je les ai préfixé de MOR vu que Select et Order existent déjà en méthode d’extension pour enumerable (System.Linq.enumerable)
Bon elles sont ce qu’elles sont c’est un début et mon idée serait d’essayer de générer des requêtes SQL que j’exécute via un dbprovider et je remplie une liste générique d’objets métiers que je
retourne en résultat (d’où le prefixe MOR pour mapping objet relationnel)
public static class MORExpression
{
public static List <T> MORSelect<T>(this IEnumerable <T> source, PredicateHandler <T> Predicate)
{
List <T> result = new List <T>();
foreach (T t in
source)
{
if (Predicate(t))
result.Add(t);
}
return result;
}
public static List <T> MOROrder<T>(this IEnumerable <T> source, System.Collections.Generic.IComparer <T> Predicate)
{
List <T> result = new List <T>();
result.AddRange((List <T>)source);
result.Sort(Predicate);
return result;
}
}
Utilisation
private void button1_Click(object sender,
EventArgs e)
{
List <Contact > Contacts = new List <Contact >();
Contacts.Add(new Contact (1, "Romagny" ));
Contacts.Add(new Contact (2, "Bellin" ));
Contacts.Add(new Contact (3, "Mariz" ));
Contacts.Add(new Contact (4, "Benon" ));
Contacts.Add(new Contact (5, "Felin" ));
GenericComparer <Contact > GenericComparer = new GenericComparer <Contact >("ContactName" , SorterMode .Ascending);
stringPredicate stringPredicate = new stringPredicate (stringCondition .StartsWith, "ContactName" , "B" );
List <Contact > result = Contacts.MORSelect<Contact >(stringPredicate.Predicate).MOROrder<Contact >(GenericComparer);
//OU encore plus rapide >>
List <Contact > result = Contacts.MORSelect<Contact >(new stringPredicate (stringCondition .StartsWith, "ContactName" , "B" ).Predicate).MOROrder<Contact >(new GenericComparer <Contact >("ContactName" , SorterMode .Ascending));
dataGridView1.DataSource = result;
}
}
A MORSelect je passe une méthode qui sera appelée par le délégué pour filtrer
A MOROrder je passe un System.Collection.IComparable<T>
En .NET 2.0
il faut passer par une CLASSE generic (et oui à tout factoriser on se retrouve parfois obligé de « redévelopper » d’ailleurs je me demande un peu si les méthodes d'extensions de
C# 3.0 ne sont pas un remède au fait que tout est factorisé même si l’avantage c’est que l’on peut étendre des classes dont on a pas le source)
public class GenericCollection <T> :
List <T>
{
public GenericCollection <T>
MORSelect(PredicateHandler <T> Predicate)
{
GenericCollection <T> result = new GenericCollection <T>();
foreach (T t in
this )
{
if (Predicate(t))
result.Add(t);
}
return result;
}
public GenericCollection <T> MOROrder(System.Collections.Generic.IComparer <T> Predicate)
{
GenericCollection <T> result = new GenericCollection <T>();
result.AddRange(this );
result.Sort(Predicate);
return result;
}
}
Utilsation
private void button1_Click(object sender,
EventArgs e)
{
GenericCollection <Contact > Contacts = new GenericCollection <Contact >();
Contacts.Add(new Contact (1, "Romagny" ));
Contacts.Add(new Contact (2, "Bellin" ));
Contacts.Add(new Contact (3, "Mariz" ));
Contacts.Add(new Contact (4, "Benon" ));
Contacts.Add(new Contact (5, "Felin" ));
//
List <Contact >
result = Contacts.MORSelect(new stringPredicate (stringCondition .StartsWith, "ContactName" , "B" ).Predicate).MOROrder(new GenericComparer <Contact >("ContactName" , SorterMode .Ascending));
dataGridView1.DataSource = result;
}
Par Romagny13
0
-
Recommander
Ressources Linq et téléchargement windows server 2008
bon un lot de liens ca fait un moment que j'ai pas une minute à moi
le centre de developpement us de CSharp semble disposer de ressources sur Linq (Linq to sharepoint,linq to nhibernate,linq to dom,etc.)
http://msdn2.microsoft.com/en-us/vcsharp/default.aspx
Windows server 2008 (Longhorn) Beta 3
http://msdn2.microsoft.com/en-us/evalcenter/bb383571.aspx
7 webcasts pour découvrir Wibdows server 2008 (quelle bonne idée :p)
http://www.microsoft.com/france/technet/seminaires/seminaires.mspx
Evaluation Office 2007 et office project server 2007
http://www.microsoft.com/france/technet/eval/default.mspx
Microsoft Forefront and System Center Demonstration Toolkit
http://www.microsoft.com/downloads/details.aspx?FamilyID=4D7329B8-2BD1-4AB4-A73C-75E9E0912DE8&displaylang=en
SilverLight Learning guide (pas mal de liens peut être interessants)
http://searchvb.techtarget.com/generic/0,295582,sid8_gci1256287,00.html?track=NL-462&ad=591788&asrc=EM_NLN_1537243&uid=5231204
Par Romagny13
0
-
Recommander
Par Romagny13
0
-
Recommander