Your SlideShare is downloading. ×
Share pointtechies linqtosp-andsbs
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Share pointtechies linqtosp-andsbs


Published on

Published in: Technology

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide
  • This slide shows the language enhancements for C# that directly support LINQ. These enhancements make it possible to write compact LINQ queries in a single statement.
  • Short hand properties with no member variables
  • Again, short hand with no member variables
  • var keyword
  • Transcript

    • 1. LinqToSharePointSandBoxed SolutionShakir Majeed Khan
    • 2. MySelf User Group Leader of SharePoint Techies, Working independently on SharePoint technologies. Trainer for Microsoft Office SharePoint Server 2007 and Window SharePoint Services 3.0 at AUC Technologies.
    • 3. Agenda session is divided into two LinqtoSharePoint SandBoxed Solution Questions
    • 4. What’s wrong with this Queries in SqlConnection c = new SqlConnection(…); quotes c.Open(); SqlCommand cmd = new SqlCommand( @"SELECT c.Name, c.Phone Loosely bound FROM Customers c arguments WHERE c.City = @p0"); cmd.Parameters.AddWithValue("@p0", "London“); DataReader dr = c.Execute(cmd); Loosely typed while (dr.Read()) { result sets string name = dr.GetString(0); string phone = dr.GetString(1); DateTime date = dr.GetDateTime(2); No compile time } checks dr.Close();
    • 5. What’s wrong with this
    • 6. LINQ (pronounced Link):Language INtegrated Query
    • 7. Language Integrated QuerySimplified, object-oriented way to queryBridges OOP and relational dataCompile-time checked queriesProvides IntelliSense inside Visual StudioUnified syntax for querying any data source
    • 8. Linq to SQL Classes public class Customer { … } describe data public class Northwind : DataContext Tables are like { collections public Table<Customer> Customers; … } Strongly typed connections Northwind db = new Northwind(…); var contacts = Integrated from c in db.Customers query syntax where c.City == "London" select new { c.Name, c.Phone }; Strongly typed results
    • 9. CAML(Collaborative ApplicationMarkUp Language)SPWeb web;SPQueryquery = newSPQuery(); Queries in quotesquery.Query= String.Format(“<Where><And> <Eq><FieldRef Name=LastName /><Value Type=Text>Shakir</Value></Eq> <Geq><FieldRef Name=Age /> Loosely bound<Value Type=Number>16</Value> arguments</Geq> </And></Where>”) No compile timeSPListItemCollectionl Coll= checksweb.Lists[“Employee”].GetItems(query);
    • 10. Demo
    • 11. C# Enhancments for LINQ IEnumerable<T>, IQueryable<T> Automatic Properties Object and Collection Initializers Lambda Expressions Query Syntax Anonymous Types
    • 12. IEnumerable<T>, IQueryable<T> Contained in System.Collections.Generic Implemented by the query provider Supports a simple iteration or a query against that type This is what allows LINQ to query
    • 13. Automatic Properties Allows short-hand property declarations Compiler emits getters and setters Used in LINQ to surface propertiespublic class Contact { public string FirstName { get; set; } public string LastName { get; set; }}
    • 14. Object and Collection Initializers//Traditional approachContact c= new Contact();c.FirstName = “shakir";c.LastName = “majeed ";//Object InitializerContact c= new Contact{ FirstName=“shakir", LastName=“Majeed "};//Collection InitializerList<Contact> contacts = new List<Contact>{ Contact c= new Contact{ FirstName=“shakir", LastName=“majeed"}, Contact c= new Contact{ FirstName=“aamir", LastName=“majeed" }, Contact c= new Contact{ FirstName=“zakir", LastName=“majeed" },};
    • 15. Lambda Expressions Compact way to write anonymous functions// passing parameter using an anonymous delegateIEnumerable<Contact> results = contacts.Where( delegate(Contact c) {return c.FirstName==“shakir”;} );// equivalent code using a lambda expressionIEnumerable<Contact> results = contacts.Where( c => FirstName=="shakir" );
    • 16. Query Syntax Offers a readable alternative to Method syntaxIEnumerable<Contact> results = contacts.Where( c=> FirstName=="shakir");IEnumerable<Contact> results = from c in contacts where c.FirstName.Equals("shakir");
    • 17. Anonymous Types Allows developers to use variables without declaring the type. Still strongly typed, but inferredvar results = from c in contacts where c.FirstName.Equals("Mike");
    • 18. Demo
    • 19. Thank YouFacebook: