• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Share pointtechies linqtosp-andsbs
 

Share pointtechies linqtosp-andsbs

on

  • 639 views

 

Statistics

Views

Total Views
639
Views on SlideShare
395
Embed Views
244

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 244

http://www.shakirmajeed.com 244

Accessibility

Categories

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.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
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 Share pointtechies linqtosp-andsbs Presentation Transcript

  • LinqToSharePointSandBoxed SolutionShakir Majeed Khanhttp://sharepointtechies.wordpress.com/
  • MySelfhttp://junooni.wordpress.com/shakir.majeed@gmail.comwww.facebook.com/shakir.majeed 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.
  • Agenda session is divided into two LinqtoSharePoint SandBoxed Solution Questions
  • 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();
  • What’s wrong with this
  • LINQ (pronounced Link):Language INtegrated Query
  • 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
  • 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
  • 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);
  • Demo
  • C# Enhancments for LINQ IEnumerable<T>, IQueryable<T> Automatic Properties Object and Collection Initializers Lambda Expressions Query Syntax Anonymous Types
  • 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
  • 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; }}
  • 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" },};
  • 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" );
  • 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");
  • 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");
  • Demo
  • Thank YouFacebook: http://www.facebook.com/shakir.majeedBlog: http://junooni.wordpress.com/Email: shakir.majeed@gmail.com