Share pointtechies linqtosp-andsbs
Upcoming SlideShare
Loading in...5

Share pointtechies linqtosp-andsbs






Total Views
Views on SlideShare
Embed Views



1 Embed 245 245



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • 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

Share pointtechies linqtosp-andsbs Presentation 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: