














    o
    o


    o
    o

    o



    o
var entry = new {                 Dim entry = New With { _
    Title = "Dear Diary",             .Title = "Dear Diary", _
...
                         static                Module
                                                 using Imports

I...
                 this
static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
    foreach (T o in source)
...

delegate string MyDelegate(int i);

static string MyMethod(int i) { … }
MyDelegate del1 = new MyDelegate(MyMethod);   //...



Expression<Func<int, int>> inc = (a => a + 1);

ParameterExpression CS$a;
Expression<Func<int, int>> inc =
  Expres...

var names = from s in Students
            where s.Age % 2 == 0
            orderby s.Name descending
            select...

    o
    o


    o



    o

    o   

    o   
    o   

    o   

    o
    o   
    o   




    o   

    o   
    o   















    from x1 in e1
    join x2 in e2 on k1 equals k2
    …

    from * in ( e1 ) . Join(
      e2 , x1 => k1 , x2 => k2 ...

    o   EqualityComparer<TKey>.Default

    o                Equals()   GetHashcode()
    o

           IEqualityCompa...
           into
    o
    o   Func<TOuter, TInner, TResult> resultSelector
                   into
    o


    o
    o  ...
                       from
    o                                  IEnumerable<T>


from x1 in e1
from x2 in e2
…

from...


    o                  IEnumerable<T>

    o   yield return

    o
    o
    o
    o

    o
    o


    o
        •   foreach

    o


    o


    o

    o
    o                  IEnumerable<>

    o
    o   EnumerableRowCollection<DataRow>
            AsEnumerable(thi...


    o                   IQueryable<T>


public interface IQueryable   : IEnumerable
{
    Type ElementType { get;   }
...



public interface IQueryProvider
{
    IQueryable CreateQuery(Expression expression);
    IQueryable<TElement>
        ...
public static TSource First<TSource>(
                      this IQueryable<TSource> source)
{
  return source.Provider.Ex...
   IEnumerable   IQueryable


    o
    o


    o
    o


    o





    o
    o
    o
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01
Upcoming SlideShare
Loading in …5
×

Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01

525
-1

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
525
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Kdahlby 200908 Stldodn Linqinternals 090903222505 Phpapp01

  1. 1.      
  2. 2.       
  3. 3.   o o  o o
  4. 4.  o   o
  5. 5. var entry = new { Dim entry = New With { _ Title = "Dear Diary", .Title = "Dear Diary", _ DateTime.Now DateTime.Now _ }; } Console.WriteLine("{0:d}: {1}", Console.WriteLine("{0:d}: {1}", _ entry.Now, entry.Title); entry.Now, entry.Title) var Dim
  6. 6.  static Module  using Imports  Imports System.Runtime.CompilerServices Module StringExtensions <Extension()> _ Public Sub Print(ByVal aString As String) Console.WriteLine(aString) End Sub End Module Dim hello = "Hello from StringExtensions" hello.Print()
  7. 7.  this static void ForEach<T>(this IEnumerable<T> source, Action<T> action) { foreach (T o in source) action(o); }  delegate void Action(); delegate void Action<T>(T arg); delegate void Action<T1, T2>(T1 arg1, T2 arg2); delegate TResult Func<TResult>(); delegate TResult Func<T, TResult>(T arg); delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
  8. 8.  delegate string MyDelegate(int i); static string MyMethod(int i) { … } MyDelegate del1 = new MyDelegate(MyMethod); // C# 1.0 MyDelegate del2 = delegate(int i) { … }; // C# 2.0 MyDelegate del3 = MyMethod; // C# 2.0 MyDelegate del4 = (int i) => { … }; // C# 3.0 Func<int, string> del5 = i => { … }; // C# 3.0  Dim del4 As MyDelegate = Function(i As Integer) …
  9. 9.    Expression<Func<int, int>> inc = (a => a + 1);  ParameterExpression CS$a; Expression<Func<int, int>> inc = Expression.Lambda<Func<int, int>>( Expression.Add( CS$a = Expression.Parameter(typeof(int), "a"), Expression.Constant(1, typeof(int))), new ParameterExpression[] { CS$a });
  10. 10.  var names = from s in Students where s.Age % 2 == 0 orderby s.Name descending select s.Name;  IEnumerable<string> names = Students.Where(s => s.Age % 2 == 0) .OrderByDescending(s => s.Name) .Select(s => s.Name);
  11. 11.  o o  o  o
  12. 12.  o   o  o   o   o o  o   o   o  o 
  13. 13.              
  14. 14.  from x1 in e1 join x2 in e2 on k1 equals k2 …  from * in ( e1 ) . Join( e2 , x1 => k1 , x2 => k2 , (x1 , x2) => new { x1 , x2 }) …  o this o o o o
  15. 15.  o EqualityComparer<TKey>.Default  o Equals() GetHashcode() o  IEqualityComparer<TKey> o o
  16. 16.  into o o Func<TOuter, TInner, TResult> resultSelector  into o o o Func<TOuter, IEnumerable<TInner>, TResult> resultSelector  o DefaultIfEmpty() from x1 in e1 join x2 in e2 on k1 equals k2 into j from xj in j . DefaultIfEmpty() …
  17. 17.  from o IEnumerable<T>  from x1 in e1 from x2 in e2 …  from * in ( e1 ) . SelectMany( x1 => e2 , ( x1 , x2 ) => new { x1 , x2 } ) …  * o
  18. 18.   o IEnumerable<T>  o yield return  o o o o
  19. 19.  o o  o • foreach o  o  o
  20. 20.  o o IEnumerable<>  o o EnumerableRowCollection<DataRow> AsEnumerable(this DataTable source) o EnumerableRowCollectionExtensions  o Cast<T>() OfType<T>() o foreach from MyType obj in MyArrayList …
  21. 21.   o IQueryable<T> public interface IQueryable : IEnumerable { Type ElementType { get; } Expression Expression { get; } IQueryProvider Provider { get; } } public interface IQueryable<T> : IEnumerable<T>, IQueryable, IEnumerable { }
  22. 22.  public interface IQueryProvider { IQueryable CreateQuery(Expression expression); IQueryable<TElement> CreateQuery<TElement>(Expression expression); object Execute(Expression expression); TResult Execute<TResult>(Expression expression); }
  23. 23. public static TSource First<TSource>( this IQueryable<TSource> source) { return source.Provider.Execute<TSource>( Expression.Call(null, ((MethodInfo) MethodBase.GetCurrentMethod()) .MakeGenericMethod(new Type[] { typeof(TSource) }), new Expression[] { source.Expression } ) ); }
  24. 24.  IEnumerable IQueryable   o o  o o
  25. 25.   o  o o o

×