<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>Camlex.NET</title><link>http://camlex.codeplex.com/project/feeds/rss</link><description>Camlex.NET simplifies creating of CAML queries for Windows SharePoint Services by using expression trees.</description><item><title>Created Unassigned: No option to include Query tag in client xml [14001]</title><link>http://camlex.codeplex.com/workitem/14001</link><description>When using Camlex.Client the Query.ToString method has one overload which gives the option of including the View xml tag. If the option is set to false I would expect both the Query and Where tags to be output but only the Where tag is output.&lt;br /&gt;</description><author>syoungPB</author><pubDate>Sun, 16 Jun 2013 10:38:08 GMT</pubDate><guid isPermaLink="false">Created Unassigned: No option to include Query tag in client xml [14001] 20130616103808A</guid></item><item><title>New Post: "In" operator</title><link>http://camlex.codeplex.com/discussions/270948</link><description>&lt;div style="line-height: normal;"&gt;IN operation is now supported: &lt;a href="http://sadomovalex.blogspot.com/2013/06/support-for-in-caml-operation-camlex-35.html" rel="nofollow"&gt;Support for IN CAML operation: Camlex 3.5 and Camlex.Client 1.3 are released&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 21:00:44 GMT</pubDate><guid isPermaLink="false">New Post: "In" operator 20130615090044P</guid></item><item><title>Updated Release: Camlex.Client 1.3 (Jun 15, 2013)</title><link>https://camlex.codeplex.com/releases/view/96198</link><description>&lt;div class="wikidoc"&gt;Camlex.Client 1.3 release:
&lt;ul&gt;&lt;li&gt;Support for In CAML operation&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.Client 1.2 release:
&lt;ul&gt;&lt;li&gt;Join several string conditions into single condition for query&lt;/li&gt;
&lt;li&gt;Support for double (in CAML Number) native data type&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.Client 1.1 release:&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Support for RowLimit&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex for client object model v.1.0:
&lt;ul&gt;&lt;li&gt;References are changed to Microsoft.SharePoint.Client&lt;/li&gt;
&lt;li&gt;Use ListItem instead of SPListItem&lt;/li&gt;
&lt;li&gt;Remove guid and int indexers support (they don&amp;#39;t exist in ListItem)&lt;/li&gt;
&lt;li&gt;Modify .ToCaml() to only output XML with a surrounding View and Query elements&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 19:02:49 GMT</pubDate><guid isPermaLink="false">Updated Release: Camlex.Client 1.3 (Jun 15, 2013) 20130615070249P</guid></item><item><title>Released: Camlex.Client 1.3 (Jun 15, 2013)</title><link>http://camlex.codeplex.com/releases/view/96198</link><description>
&lt;div class="wikidoc"&gt;Camlex.Client 1.3 release:
&lt;ul&gt;
&lt;li&gt;Support for In CAML operation&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.Client 1.2 release:
&lt;ul&gt;
&lt;li&gt;Join several string conditions into single condition for query &lt;/li&gt;&lt;li&gt;Support for double (in CAML Number) native data type&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.Client 1.1 release:&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Support for RowLimit&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex for client object model v.1.0:
&lt;ul&gt;
&lt;li&gt;References are changed to Microsoft.SharePoint.Client &lt;/li&gt;&lt;li&gt;Use ListItem instead of SPListItem &lt;/li&gt;&lt;li&gt;Remove guid and int indexers support (they don&amp;#39;t exist in ListItem) &lt;/li&gt;&lt;li&gt;Modify .ToCaml() to only output XML with a surrounding View and Query elements&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Sat, 15 Jun 2013 19:02:49 GMT</pubDate><guid isPermaLink="false">Released: Camlex.Client 1.3 (Jun 15, 2013) 20130615070249P</guid></item><item><title>Updated Release: Camlex.NET 3.5 (Jun 15, 2013)</title><link>https://camlex.codeplex.com/releases/view/42931</link><description>&lt;div class="wikidoc"&gt;Camlex.NET 3.5 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Support for In CAML operation&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 3.4 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Join several string conditions into single condition for query&lt;/li&gt;
&lt;li&gt;Support for double (in CAML Number) native data type&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 3.3 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Add ToSPQuery() method to IQuery interface&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 3.2 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Add conditions to existing string queries&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 3.1 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Dynamic ViewFields&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 3.0 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Reverse engineering (CAML to C#)&lt;/li&gt;
&lt;li&gt;Camlex Online &lt;a href="http://camlex-online.org"&gt;http://camlex-online.org&lt;/a&gt; powered by Camlex.NET v.3.0&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 2.4 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Support for queries by user id (DataTypes.UserID)&lt;/li&gt;
&lt;li&gt;Support for queries by current user id &amp;lt;UserID /&amp;gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 2.3 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Dynamic OrderBy statements&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 2.2 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Support for ViewFields&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 2.1 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Possibility to easily combine different independent expressions&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 2.0 release&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Search by field id&lt;/li&gt;
&lt;li&gt;Support for native System.Guid type for values&lt;/li&gt;
&lt;li&gt;Search by lookup id and lookup value&lt;/li&gt;
&lt;li&gt;Dynamic filtering conditions&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.NET 2.0 contains breaking changes:
&lt;ul&gt;&lt;li&gt;SPListItem is used instead of SPItem&lt;/li&gt;
&lt;li&gt;DataTypes.Lookup type is made internal. DataTypes.LookupValue and DataTypes.LookupId are introduced instead of DataTypes.Lookup&lt;/li&gt;&lt;/ul&gt;
There is NO backward compatibility with 1.0 version.&lt;br /&gt;&lt;br /&gt;For detailed description of new features see &lt;a href="http://sadomovalex.blogspot.com/2010/04/camlexnet-20-for-sharepoint-released.html"&gt;http://sadomovalex.blogspot.com/2010/04/camlexnet-20-for-sharepoint-released.html&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 18:52:17 GMT</pubDate><guid isPermaLink="false">Updated Release: Camlex.NET 3.5 (Jun 15, 2013) 20130615065217P</guid></item><item><title>Released: Camlex.NET 3.5 (Jun 15, 2013)</title><link>http://camlex.codeplex.com/releases/view/42931</link><description>
&lt;div class="wikidoc"&gt;Camlex.NET 3.5 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Support for In CAML operation&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 3.4 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Join several string conditions into single condition for query &lt;/li&gt;&lt;li&gt;Support for double (in CAML Number) native data type&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 3.3 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Add ToSPQuery() method to IQuery interface&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 3.2 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Add conditions to existing string queries&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 3.1 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Dynamic ViewFields&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 3.0 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Reverse engineering (CAML to C#) &lt;/li&gt;&lt;li&gt;Camlex Online &lt;a href="http://camlex-online.org"&gt;http://camlex-online.org&lt;/a&gt; powered by Camlex.NET v.3.0&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 2.4 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Support for queries by user id (DataTypes.UserID) &lt;/li&gt;&lt;li&gt;Support for queries by current user id &amp;lt;UserID /&amp;gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 2.3 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Dynamic OrderBy statements&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 2.2 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Support for ViewFields&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 2.1 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Possibility to easily combine different independent expressions&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 2.0 release&lt;br&gt;
&lt;br&gt;
&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Search by field id &lt;/li&gt;&lt;li&gt;Support for native System.Guid type for values &lt;/li&gt;&lt;li&gt;Search by lookup id and lookup value &lt;/li&gt;&lt;li&gt;Dynamic filtering conditions&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Camlex.NET 2.0 contains breaking changes:
&lt;ul&gt;
&lt;li&gt;SPListItem is used instead of SPItem &lt;/li&gt;&lt;li&gt;DataTypes.Lookup type is made internal. DataTypes.LookupValue and DataTypes.LookupId are introduced instead of DataTypes.Lookup&lt;/li&gt;&lt;/ul&gt;
There is NO backward compatibility with 1.0 version.&lt;br&gt;
&lt;br&gt;
For detailed description of new features see &lt;a href="http://sadomovalex.blogspot.com/2010/04/camlexnet-20-for-sharepoint-released.html"&gt;
http://sadomovalex.blogspot.com/2010/04/camlexnet-20-for-sharepoint-released.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Sat, 15 Jun 2013 18:52:17 GMT</pubDate><guid isPermaLink="false">Released: Camlex.NET 3.5 (Jun 15, 2013) 20130615065217P</guid></item><item><title>Updated Release: Camlex.Client 1.3 (Jun 15, 2013)</title><link>https://camlex.codeplex.com/releases/view/96198</link><description>&lt;div class="wikidoc"&gt;Camlex.Client 1.3 release:
&lt;ul&gt;&lt;li&gt;Support of In CAML operation&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.Client 1.2 release:
&lt;ul&gt;&lt;li&gt;Join several string conditions into single condition for query&lt;/li&gt;
&lt;li&gt;Support for double (in CAML Number) native data type&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex.Client 1.1 release:&lt;br /&gt;&lt;b&gt;New features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Support for RowLimit&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Camlex for client object model v.1.0:
&lt;ul&gt;&lt;li&gt;References are changed to Microsoft.SharePoint.Client&lt;/li&gt;
&lt;li&gt;Use ListItem instead of SPListItem&lt;/li&gt;
&lt;li&gt;Remove guid and int indexers support (they don&amp;#39;t exist in ListItem)&lt;/li&gt;
&lt;li&gt;Modify .ToCaml() to only output XML with a surrounding View and Query elements&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 18:49:14 GMT</pubDate><guid isPermaLink="false">Updated Release: Camlex.Client 1.3 (Jun 15, 2013) 20130615064914P</guid></item><item><title>Updated Wiki: Home</title><link>https://camlex.codeplex.com/wikipage?version=36</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Camlex.NET simplifies creating of CAML queries for Windows SharePoint Services by using expression trees.&lt;br /&gt;&lt;br /&gt;If you find Camlex.NET useful, you may support its development via &lt;a href="http&amp;#58;&amp;#47;&amp;#47;camlex-online.org"&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=camlex&amp;DownloadId=325346" alt="Donate" title="Donate" /&gt;&lt;/a&gt; button on the online version &lt;a href="http://camlex-online.org"&gt;http://camlex-online.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Client object model&lt;/b&gt;&lt;br /&gt;Version for Client object model is also available. It can be downloaded from here: &lt;a href="http://camlex.codeplex.com/releases/view/96198"&gt;Camlex.Client&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Online version&lt;/b&gt;&lt;br /&gt;You can convert your existing CAML queries to C# code for Camlex.NET using online service powered by Camlex: &lt;a href="http://camlex-online.org"&gt;http://camlex-online.org&lt;/a&gt;.&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.ndepend.com"&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=camlex&amp;DownloadId=693242" alt="powered&amp;#32;by&amp;#32;ndepend" title="powered&amp;#32;by&amp;#32;ndepend" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation Instructions&lt;/b&gt;&lt;br /&gt;In order to start working with Camlex.NET, please download and reference Camlex.NET.dll assembly in your project. After that you can create CAML queries using lambda expressions.&lt;br /&gt;Starting from version 3.0 you can install NuGet package for Camlex from online packages gallery:&lt;br /&gt;&lt;pre&gt;
Install-Package Camlex.NET.dll
&lt;/pre&gt;&lt;br /&gt;or Client version:&lt;br /&gt;&lt;pre&gt;
Install-Package Camlex.Client.dll
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quick Start&lt;/b&gt;&lt;br /&gt;Camlex.NET is a new technique in Sharepoint development. It abstracts developers from syntax of CAML queries and helps them to concentrate on business tasks. With Camlex.NET developers could think about WHAT they need to do, instead of HOW to do it. It also brings the following advantages for Sharepoint developers:
&lt;ul&gt;&lt;li&gt;Compile time checking of expressions&lt;/li&gt;
&lt;li&gt;Natural and intuitive syntax using lambda expressions and fluent interfaces&lt;/li&gt;
&lt;li&gt;Support for native .Net types (int, strings, bool, DateTime, Guid) and operations (==, !=, &amp;gt;, &amp;lt;, etc)&lt;/li&gt;
&lt;li&gt;Support for Sharepoint-specific data types&lt;/li&gt;
&lt;li&gt;Ability to specify non-constant expressions inside filtering conditions (variables, method calls, etc)&lt;/li&gt;
&lt;li&gt;Fully customizable resulting query object&lt;/li&gt;
&lt;li&gt;Ability to build dynamic filtering conditions and join them using And/Or logical joins&lt;/li&gt;
&lt;li&gt;Search by lookup fields using LookupValue or LookupId&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Now let&amp;#39;s consider some basic scenarios:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Scenario 1. Simple query&lt;/b&gt;&lt;br /&gt;Suppose that you need to select all items which have Status field set to Completed (following is the standard syntax of CAML):&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Status&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Completed&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;This query can be made with Camlex using the following syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;string&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;] == &lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;).ToString();
&lt;/pre&gt;&lt;/div&gt;Notice, other comparison operations like “&amp;lt;”, “&amp;lt;=”, “&amp;gt;”, “&amp;gt;=” are supported as well.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Scenario 2. Query with “and”/”or” conditions&lt;/b&gt;&lt;br /&gt;Suppose that you need to select items which have ProductID = 1000 and IsCompleted set to false or null. Syntax of appropriate standard CAML query follows:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;ProductID&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Integer&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;1000&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;IsCompleted&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Boolean&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;IsCompleted&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;With help of Camlex it could be converted using following natural syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;int&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;ProductID&amp;quot;&lt;/span&gt;] == 1000 &amp;amp;&amp;amp; ((&lt;span style="color:Blue;"&gt;bool&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;IsCompleted&amp;quot;&lt;/span&gt;] == &lt;span style="color:Blue;"&gt;false&lt;/span&gt; || x[&lt;span style="color:#A31515;"&gt;&amp;quot;IsCompleted&amp;quot;&lt;/span&gt;] == &lt;span style="color:Blue;"&gt;null&lt;/span&gt;))
            .ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 3. Query with DateTime&lt;/b&gt;&lt;br /&gt;Lets suppose that you need to retrieve items which were modified on 01-Jan-2010:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Modified&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DateTime&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;2010-01-01T12:00:00Z&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;Using Camlex you can simply write:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (DateTime)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Modified&amp;quot;&lt;/span&gt;] == &lt;span style="color:Blue;"&gt;new&lt;/span&gt; DateTime(2010, 01, 01)).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 4. Query with BeginsWith and Contains operations&lt;/b&gt;&lt;br /&gt;Consider the query that should return items which Title field starts with “Task” and Project field contains “Camlex”:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;BeginsWith&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Task&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;BeginsWith&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Project&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Camlex&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;You can achieve result using the following natural syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; ((&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;]).StartsWith(&lt;span style="color:#A31515;"&gt;&amp;quot;Task&amp;quot;&lt;/span&gt;) &amp;amp;&amp;amp; ((&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Project&amp;quot;&lt;/span&gt;]).Contains(&lt;span style="color:#A31515;"&gt;&amp;quot;Camlex&amp;quot;&lt;/span&gt;))
            .ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 5. Query with none C# native data types&lt;/b&gt;&lt;br /&gt;Suppose that you need to retrieve all items modified by Administrator:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Editor&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;User&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Administrator&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;Notice that value is of Sharepoint-specific User data type. You can easily achieve the result with alternative string-based syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Editor&amp;quot;&lt;/span&gt;] == (DataTypes.User)&lt;span style="color:#A31515;"&gt;&amp;quot;Administrator&amp;quot;&lt;/span&gt;)
                .ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 6. Query with sorting (OrderBy)&lt;/b&gt;&lt;br /&gt;Suppose that you need to select all items which have ID &amp;gt;= 5 and the result should be sorted by Modified field:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Geq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;ID&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Integer&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;5&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Geq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;OrderBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Modified&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;OrderBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;You need to write the following Camlex expression in order to construct this query:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;int&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;] &amp;gt;= 5)
        .OrderBy(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Modified&amp;quot;&lt;/span&gt;]).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 7. Query with grouping (GroupBy)&lt;/b&gt;&lt;br /&gt;Suppose that we need to select items having not-null Status field and result set should be grouped by Author field:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNotNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Status&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNotNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;GroupBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Author&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;GroupBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;With Camlex you could simply rewrite it as:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;] != &lt;span style="color:Blue;"&gt;null&lt;/span&gt;)
        .GroupBy(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Author&amp;quot;&lt;/span&gt;]).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 8. Query with non-constant expressions in lvalue and rvalue&lt;/b&gt;&lt;br /&gt;Non-constant expression gives you more control over CAML. Suppose that you need to select items depending on current locale: for English locale you need to select items which have TitleEng field set to “eng”; for non-English locale you need to select items which have Title field set to “non-eng”. I.e.:&lt;br /&gt;Query for English locale:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;TitleEng&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;eng&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;Query for non-English locale:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;non-eng&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;It is not so hard with Camlex:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;bool&lt;/span&gt; isEng = &lt;span style="color:Blue;"&gt;true&lt;/span&gt;; &lt;span style="color:Green;"&gt;// or false depending on Thread.CurrentThread.CurrentUICulture&lt;/span&gt;

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[isEng ? &lt;span style="color:#A31515;"&gt;&amp;quot;TitleEng&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;] == (isEng ? &lt;span style="color:#A31515;"&gt;&amp;quot;eng&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;non-eng&amp;quot;&lt;/span&gt;)).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 9. Dynamic filtering conditions&lt;/b&gt;&lt;br /&gt;Starting with 2.0 version you can build dynamic filtering conditions and join them using WhereAll/WhereAny methods which use And/Or logical joins respectively.&lt;br /&gt;Suppose that we need to retrieve all items which contain at least one of the values {“hello”, “greeting”, “hi”} in Title field. I.e. we need to use the following CAML query:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;hello&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;greeting&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;hi&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;With Camlex.NET 2.0 we can create lambda expression for each condition and pass them into new WhereAny method:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Green;"&gt;// list of tokens&lt;/span&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; tokens = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:Blue;"&gt;string&lt;/span&gt;&amp;gt; { &lt;span style="color:#A31515;"&gt;&amp;quot;hello&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;greeting&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;hi&amp;quot;&lt;/span&gt; };
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; expressions = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; List&amp;lt;Expression&amp;lt;Func&amp;lt;SPListItem, &lt;span style="color:Blue;"&gt;bool&lt;/span&gt;&amp;gt;&amp;gt;&amp;gt;();

&lt;span style="color:Green;"&gt;// create lambda expression for each token in list&lt;/span&gt;
&lt;span style="color:Blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:Blue;"&gt;string&lt;/span&gt; t &lt;span style="color:Blue;"&gt;in&lt;/span&gt; tokens)
{
    &lt;span style="color:Blue;"&gt;string&lt;/span&gt; token = t;
   expressions.Add(x =&amp;gt; ((&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;]).Contains(token));
}

&lt;span style="color:Green;"&gt;// prepare query&lt;/span&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml = Camlex.Query().WhereAny(expressions).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 18:43:53 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130615064353P</guid></item><item><title>Updated Wiki: Home</title><link>https://camlex.codeplex.com/wikipage?version=35</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Camlex.NET simplifies creating of CAML queries for Windows SharePoint Services by using expression trees.&lt;br /&gt;&lt;br /&gt;If you find Camlex.NET useful, you may support its development via &lt;a href="http&amp;#58;&amp;#47;&amp;#47;camlex-online.org"&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=camlex&amp;DownloadId=325346" alt="Donate" title="Donate" /&gt;&lt;/a&gt; button on the online version &lt;a href="http://camlex-online.org"&gt;http://camlex-online.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Client object model&lt;/b&gt;&lt;br /&gt;Version for Client object model is also available. It can be downloaded from here: &lt;a href="http://camlex.codeplex.com/releases/view/96198"&gt;Camlex.Client&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Online version&lt;/b&gt;&lt;br /&gt;You can convert your existing CAML queries to C# code for Camlex.NET using online service powered by Camlex: &lt;a href="http://camlex-online.org"&gt;http://camlex-online.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation Instructions&lt;/b&gt;&lt;br /&gt;In order to start working with Camlex.NET, please download and reference Camlex.NET.dll assembly in your project. After that you can create CAML queries using lambda expressions.&lt;br /&gt;Starting from version 3.0 you can install NuGet package for Camlex from online packages gallery:&lt;br /&gt;&lt;pre&gt;
Install-Package Camlex.NET.dll
&lt;/pre&gt;&lt;br /&gt;or Client version:&lt;br /&gt;&lt;pre&gt;
Install-Package Camlex.Client.dll
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.ndepend.com"&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=camlex&amp;DownloadId=693242" alt="powered&amp;#32;by&amp;#32;ndepend" title="powered&amp;#32;by&amp;#32;ndepend" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quick Start&lt;/b&gt;&lt;br /&gt;Camlex.NET is a new technique in Sharepoint development. It abstracts developers from syntax of CAML queries and helps them to concentrate on business tasks. With Camlex.NET developers could think about WHAT they need to do, instead of HOW to do it. It also brings the following advantages for Sharepoint developers:
&lt;ul&gt;&lt;li&gt;Compile time checking of expressions&lt;/li&gt;
&lt;li&gt;Natural and intuitive syntax using lambda expressions and fluent interfaces&lt;/li&gt;
&lt;li&gt;Support for native .Net types (int, strings, bool, DateTime, Guid) and operations (==, !=, &amp;gt;, &amp;lt;, etc)&lt;/li&gt;
&lt;li&gt;Support for Sharepoint-specific data types&lt;/li&gt;
&lt;li&gt;Ability to specify non-constant expressions inside filtering conditions (variables, method calls, etc)&lt;/li&gt;
&lt;li&gt;Fully customizable resulting query object&lt;/li&gt;
&lt;li&gt;Ability to build dynamic filtering conditions and join them using And/Or logical joins&lt;/li&gt;
&lt;li&gt;Search by lookup fields using LookupValue or LookupId&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Now let&amp;#39;s consider some basic scenarios:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Scenario 1. Simple query&lt;/b&gt;&lt;br /&gt;Suppose that you need to select all items which have Status field set to Completed (following is the standard syntax of CAML):&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Status&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Completed&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;This query can be made with Camlex using the following syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;string&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;] == &lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;).ToString();
&lt;/pre&gt;&lt;/div&gt;Notice, other comparison operations like “&amp;lt;”, “&amp;lt;=”, “&amp;gt;”, “&amp;gt;=” are supported as well.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Scenario 2. Query with “and”/”or” conditions&lt;/b&gt;&lt;br /&gt;Suppose that you need to select items which have ProductID = 1000 and IsCompleted set to false or null. Syntax of appropriate standard CAML query follows:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;ProductID&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Integer&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;1000&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;IsCompleted&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Boolean&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;IsCompleted&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;With help of Camlex it could be converted using following natural syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;int&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;ProductID&amp;quot;&lt;/span&gt;] == 1000 &amp;amp;&amp;amp; ((&lt;span style="color:Blue;"&gt;bool&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;IsCompleted&amp;quot;&lt;/span&gt;] == &lt;span style="color:Blue;"&gt;false&lt;/span&gt; || x[&lt;span style="color:#A31515;"&gt;&amp;quot;IsCompleted&amp;quot;&lt;/span&gt;] == &lt;span style="color:Blue;"&gt;null&lt;/span&gt;))
            .ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 3. Query with DateTime&lt;/b&gt;&lt;br /&gt;Lets suppose that you need to retrieve items which were modified on 01-Jan-2010:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Modified&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DateTime&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;2010-01-01T12:00:00Z&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;Using Camlex you can simply write:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (DateTime)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Modified&amp;quot;&lt;/span&gt;] == &lt;span style="color:Blue;"&gt;new&lt;/span&gt; DateTime(2010, 01, 01)).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 4. Query with BeginsWith and Contains operations&lt;/b&gt;&lt;br /&gt;Consider the query that should return items which Title field starts with “Task” and Project field contains “Camlex”:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;BeginsWith&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Task&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;BeginsWith&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Project&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Camlex&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;You can achieve result using the following natural syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; ((&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;]).StartsWith(&lt;span style="color:#A31515;"&gt;&amp;quot;Task&amp;quot;&lt;/span&gt;) &amp;amp;&amp;amp; ((&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Project&amp;quot;&lt;/span&gt;]).Contains(&lt;span style="color:#A31515;"&gt;&amp;quot;Camlex&amp;quot;&lt;/span&gt;))
            .ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 5. Query with none C# native data types&lt;/b&gt;&lt;br /&gt;Suppose that you need to retrieve all items modified by Administrator:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Editor&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;User&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Administrator&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;Notice that value is of Sharepoint-specific User data type. You can easily achieve the result with alternative string-based syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Editor&amp;quot;&lt;/span&gt;] == (DataTypes.User)&lt;span style="color:#A31515;"&gt;&amp;quot;Administrator&amp;quot;&lt;/span&gt;)
                .ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 6. Query with sorting (OrderBy)&lt;/b&gt;&lt;br /&gt;Suppose that you need to select all items which have ID &amp;gt;= 5 and the result should be sorted by Modified field:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Geq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;ID&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Integer&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;5&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Geq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;OrderBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Modified&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;OrderBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;You need to write the following Camlex expression in order to construct this query:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;int&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;] &amp;gt;= 5)
        .OrderBy(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Modified&amp;quot;&lt;/span&gt;]).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 7. Query with grouping (GroupBy)&lt;/b&gt;&lt;br /&gt;Suppose that we need to select items having not-null Status field and result set should be grouped by Author field:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNotNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Status&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNotNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;GroupBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Author&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;GroupBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;With Camlex you could simply rewrite it as:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;] != &lt;span style="color:Blue;"&gt;null&lt;/span&gt;)
        .GroupBy(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Author&amp;quot;&lt;/span&gt;]).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 8. Query with non-constant expressions in lvalue and rvalue&lt;/b&gt;&lt;br /&gt;Non-constant expression gives you more control over CAML. Suppose that you need to select items depending on current locale: for English locale you need to select items which have TitleEng field set to “eng”; for non-English locale you need to select items which have Title field set to “non-eng”. I.e.:&lt;br /&gt;Query for English locale:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;TitleEng&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;eng&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;Query for non-English locale:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;non-eng&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;It is not so hard with Camlex:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;bool&lt;/span&gt; isEng = &lt;span style="color:Blue;"&gt;true&lt;/span&gt;; &lt;span style="color:Green;"&gt;// or false depending on Thread.CurrentThread.CurrentUICulture&lt;/span&gt;

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[isEng ? &lt;span style="color:#A31515;"&gt;&amp;quot;TitleEng&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;] == (isEng ? &lt;span style="color:#A31515;"&gt;&amp;quot;eng&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;non-eng&amp;quot;&lt;/span&gt;)).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 9. Dynamic filtering conditions&lt;/b&gt;&lt;br /&gt;Starting with 2.0 version you can build dynamic filtering conditions and join them using WhereAll/WhereAny methods which use And/Or logical joins respectively.&lt;br /&gt;Suppose that we need to retrieve all items which contain at least one of the values {“hello”, “greeting”, “hi”} in Title field. I.e. we need to use the following CAML query:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;hello&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;greeting&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;hi&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;With Camlex.NET 2.0 we can create lambda expression for each condition and pass them into new WhereAny method:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Green;"&gt;// list of tokens&lt;/span&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; tokens = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:Blue;"&gt;string&lt;/span&gt;&amp;gt; { &lt;span style="color:#A31515;"&gt;&amp;quot;hello&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;greeting&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;hi&amp;quot;&lt;/span&gt; };
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; expressions = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; List&amp;lt;Expression&amp;lt;Func&amp;lt;SPListItem, &lt;span style="color:Blue;"&gt;bool&lt;/span&gt;&amp;gt;&amp;gt;&amp;gt;();

&lt;span style="color:Green;"&gt;// create lambda expression for each token in list&lt;/span&gt;
&lt;span style="color:Blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:Blue;"&gt;string&lt;/span&gt; t &lt;span style="color:Blue;"&gt;in&lt;/span&gt; tokens)
{
    &lt;span style="color:Blue;"&gt;string&lt;/span&gt; token = t;
   expressions.Add(x =&amp;gt; ((&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;]).Contains(token));
}

&lt;span style="color:Green;"&gt;// prepare query&lt;/span&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml = Camlex.Query().WhereAny(expressions).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 18:43:32 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130615064332P</guid></item><item><title>Updated Wiki: Home</title><link>https://camlex.codeplex.com/wikipage?version=34</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Camlex.NET simplifies creating of CAML queries for Windows SharePoint Services by using expression trees.&lt;br /&gt;&lt;br /&gt;If you find Camlex.NET useful, you may support its development via &lt;a href="http&amp;#58;&amp;#47;&amp;#47;camlex-online.org"&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=camlex&amp;DownloadId=325346" alt="Donate" title="Donate" /&gt;&lt;/a&gt; button on the online version &lt;a href="http://camlex-online.org"&gt;http://camlex-online.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Client object model&lt;/b&gt;&lt;br /&gt;Version for Client object model is also available. It can be downloaded from here: &lt;a href="http://camlex.codeplex.com/releases/view/96198"&gt;Camlex.Client&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Online version&lt;/b&gt;&lt;br /&gt;You can convert your existing CAML queries to C# code for Camlex.NET using online service powered by Camlex: &lt;a href="http://camlex-online.org"&gt;http://camlex-online.org&lt;/a&gt;.&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.ndepend.com"&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=camlex&amp;DownloadId=693242" alt="powered&amp;#32;by&amp;#32;ndepend" title="powered&amp;#32;by&amp;#32;ndepend" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation Instructions&lt;/b&gt;&lt;br /&gt;In order to start working with Camlex.NET, please download and reference Camlex.NET.dll assembly in your project. After that you can create CAML queries using lambda expressions.&lt;br /&gt;Starting from version 3.0 you can install NuGet package for Camlex from online packages gallery:&lt;br /&gt;&lt;pre&gt;
Install-Package Camlex.NET.dll
&lt;/pre&gt;&lt;br /&gt;or Client version:&lt;br /&gt;&lt;pre&gt;
Install-Package Camlex.Client.dll
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quick Start&lt;/b&gt;&lt;br /&gt;Camlex.NET is a new technique in Sharepoint development. It abstracts developers from syntax of CAML queries and helps them to concentrate on business tasks. With Camlex.NET developers could think about WHAT they need to do, instead of HOW to do it. It also brings the following advantages for Sharepoint developers:
&lt;ul&gt;&lt;li&gt;Compile time checking of expressions&lt;/li&gt;
&lt;li&gt;Natural and intuitive syntax using lambda expressions and fluent interfaces&lt;/li&gt;
&lt;li&gt;Support for native .Net types (int, strings, bool, DateTime, Guid) and operations (==, !=, &amp;gt;, &amp;lt;, etc)&lt;/li&gt;
&lt;li&gt;Support for Sharepoint-specific data types&lt;/li&gt;
&lt;li&gt;Ability to specify non-constant expressions inside filtering conditions (variables, method calls, etc)&lt;/li&gt;
&lt;li&gt;Fully customizable resulting query object&lt;/li&gt;
&lt;li&gt;Ability to build dynamic filtering conditions and join them using And/Or logical joins&lt;/li&gt;
&lt;li&gt;Search by lookup fields using LookupValue or LookupId&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Now let&amp;#39;s consider some basic scenarios:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Scenario 1. Simple query&lt;/b&gt;&lt;br /&gt;Suppose that you need to select all items which have Status field set to Completed (following is the standard syntax of CAML):&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Status&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Completed&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;This query can be made with Camlex using the following syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;string&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;] == &lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;).ToString();
&lt;/pre&gt;&lt;/div&gt;Notice, other comparison operations like “&amp;lt;”, “&amp;lt;=”, “&amp;gt;”, “&amp;gt;=” are supported as well.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Scenario 2. Query with “and”/”or” conditions&lt;/b&gt;&lt;br /&gt;Suppose that you need to select items which have ProductID = 1000 and IsCompleted set to false or null. Syntax of appropriate standard CAML query follows:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;ProductID&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Integer&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;1000&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;IsCompleted&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Boolean&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;IsCompleted&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;With help of Camlex it could be converted using following natural syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;int&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;ProductID&amp;quot;&lt;/span&gt;] == 1000 &amp;amp;&amp;amp; ((&lt;span style="color:Blue;"&gt;bool&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;IsCompleted&amp;quot;&lt;/span&gt;] == &lt;span style="color:Blue;"&gt;false&lt;/span&gt; || x[&lt;span style="color:#A31515;"&gt;&amp;quot;IsCompleted&amp;quot;&lt;/span&gt;] == &lt;span style="color:Blue;"&gt;null&lt;/span&gt;))
            .ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 3. Query with DateTime&lt;/b&gt;&lt;br /&gt;Lets suppose that you need to retrieve items which were modified on 01-Jan-2010:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Modified&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DateTime&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;2010-01-01T12:00:00Z&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;Using Camlex you can simply write:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (DateTime)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Modified&amp;quot;&lt;/span&gt;] == &lt;span style="color:Blue;"&gt;new&lt;/span&gt; DateTime(2010, 01, 01)).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 4. Query with BeginsWith and Contains operations&lt;/b&gt;&lt;br /&gt;Consider the query that should return items which Title field starts with “Task” and Project field contains “Camlex”:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;BeginsWith&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Task&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;BeginsWith&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Project&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Camlex&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;And&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;You can achieve result using the following natural syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; ((&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;]).StartsWith(&lt;span style="color:#A31515;"&gt;&amp;quot;Task&amp;quot;&lt;/span&gt;) &amp;amp;&amp;amp; ((&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Project&amp;quot;&lt;/span&gt;]).Contains(&lt;span style="color:#A31515;"&gt;&amp;quot;Camlex&amp;quot;&lt;/span&gt;))
            .ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 5. Query with none C# native data types&lt;/b&gt;&lt;br /&gt;Suppose that you need to retrieve all items modified by Administrator:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Editor&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;User&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;Administrator&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;Notice that value is of Sharepoint-specific User data type. You can easily achieve the result with alternative string-based syntax:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Editor&amp;quot;&lt;/span&gt;] == (DataTypes.User)&lt;span style="color:#A31515;"&gt;&amp;quot;Administrator&amp;quot;&lt;/span&gt;)
                .ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 6. Query with sorting (OrderBy)&lt;/b&gt;&lt;br /&gt;Suppose that you need to select all items which have ID &amp;gt;= 5 and the result should be sorted by Modified field:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Geq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;ID&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Integer&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;5&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Geq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;OrderBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Modified&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;OrderBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;You need to write the following Camlex expression in order to construct this query:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;int&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;] &amp;gt;= 5)
        .OrderBy(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Modified&amp;quot;&lt;/span&gt;]).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 7. Query with grouping (GroupBy)&lt;/b&gt;&lt;br /&gt;Suppose that we need to select items having not-null Status field and result set should be grouped by Author field:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNotNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Status&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;IsNotNull&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;GroupBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Author&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;GroupBy&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;With Camlex you could simply rewrite it as:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;] != &lt;span style="color:Blue;"&gt;null&lt;/span&gt;)
        .GroupBy(x =&amp;gt; x[&lt;span style="color:#A31515;"&gt;&amp;quot;Author&amp;quot;&lt;/span&gt;]).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 8. Query with non-constant expressions in lvalue and rvalue&lt;/b&gt;&lt;br /&gt;Non-constant expression gives you more control over CAML. Suppose that you need to select items depending on current locale: for English locale you need to select items which have TitleEng field set to “eng”; for non-English locale you need to select items which have Title field set to “non-eng”. I.e.:&lt;br /&gt;Query for English locale:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;TitleEng&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;eng&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;Query for non-English locale:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;non-eng&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Eq&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;It is not so hard with Camlex:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;bool&lt;/span&gt; isEng = &lt;span style="color:Blue;"&gt;true&lt;/span&gt;; &lt;span style="color:Green;"&gt;// or false depending on Thread.CurrentThread.CurrentUICulture&lt;/span&gt;

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml =
    Camlex.Query()
        .Where(x =&amp;gt; (&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[isEng ? &lt;span style="color:#A31515;"&gt;&amp;quot;TitleEng&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;] == (isEng ? &lt;span style="color:#A31515;"&gt;&amp;quot;eng&amp;quot;&lt;/span&gt; : &lt;span style="color:#A31515;"&gt;&amp;quot;non-eng&amp;quot;&lt;/span&gt;)).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Scenario 9. Dynamic filtering conditions&lt;/b&gt;&lt;br /&gt;Starting with 2.0 version you can build dynamic filtering conditions and join them using WhereAll/WhereAny methods which use And/Or logical joins respectively.&lt;br /&gt;Suppose that we need to retrieve all items which contain at least one of the values {“hello”, “greeting”, “hi”} in Title field. I.e. we need to use the following CAML query:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;hello&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;greeting&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;FieldRef&lt;/span&gt; &lt;span style="color:Red;"&gt;Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Title&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt; &lt;span style="color:Red;"&gt;Type&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;hi&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Contains&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Or&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Where&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;With Camlex.NET 2.0 we can create lambda expression for each condition and pass them into new WhereAny method:&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Green;"&gt;// list of tokens&lt;/span&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; tokens = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:Blue;"&gt;string&lt;/span&gt;&amp;gt; { &lt;span style="color:#A31515;"&gt;&amp;quot;hello&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;greeting&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;hi&amp;quot;&lt;/span&gt; };
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; expressions = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; List&amp;lt;Expression&amp;lt;Func&amp;lt;SPListItem, &lt;span style="color:Blue;"&gt;bool&lt;/span&gt;&amp;gt;&amp;gt;&amp;gt;();

&lt;span style="color:Green;"&gt;// create lambda expression for each token in list&lt;/span&gt;
&lt;span style="color:Blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:Blue;"&gt;string&lt;/span&gt; t &lt;span style="color:Blue;"&gt;in&lt;/span&gt; tokens)
{
    &lt;span style="color:Blue;"&gt;string&lt;/span&gt; token = t;
   expressions.Add(x =&amp;gt; ((&lt;span style="color:Blue;"&gt;string&lt;/span&gt;)x[&lt;span style="color:#A31515;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;]).Contains(token));
}

&lt;span style="color:Green;"&gt;// prepare query&lt;/span&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; caml = Camlex.Query().WhereAny(expressions).ToString();
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 18:42:57 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130615064257P</guid></item><item><title>Source code checked in, #5f17044ef6b1</title><link>http://camlex.codeplex.com/SourceControl/changeset/5f17044ef6b1</link><description>Change assembly version</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 18:36:29 GMT</pubDate><guid isPermaLink="false">Source code checked in, #5f17044ef6b1 20130615063629P</guid></item><item><title>Source code checked in, #6e677dc3ba38</title><link>http://camlex.codeplex.com/SourceControl/changeset/6e677dc3ba38</link><description>Fix tests</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 18:31:32 GMT</pubDate><guid isPermaLink="false">Source code checked in, #6e677dc3ba38 20130615063132P</guid></item><item><title>Source code checked in, #ff76997f3d47</title><link>http://camlex.codeplex.com/SourceControl/changeset/ff76997f3d47</link><description>Merge default -&amp;#62; client</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 18:23:09 GMT</pubDate><guid isPermaLink="false">Source code checked in, #ff76997f3d47 20130615062309P</guid></item><item><title>Source code checked in, #f856ac843614</title><link>http://camlex.codeplex.com/SourceControl/changeset/f856ac843614</link><description>Change assembly version</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 18:02:59 GMT</pubDate><guid isPermaLink="false">Source code checked in, #f856ac843614 20130615060259P</guid></item><item><title>Source code checked in, #8ff82d2573c9</title><link>http://camlex.codeplex.com/SourceControl/changeset/8ff82d2573c9</link><description>Merge sp2010_operators -&amp;#62; default</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 17:53:45 GMT</pubDate><guid isPermaLink="false">Source code checked in, #8ff82d2573c9 20130615055345P</guid></item><item><title>Source code checked in, #fbf09f0bb1a6</title><link>http://camlex.codeplex.com/SourceControl/changeset/fbf09f0bb1a6</link><description>More tests</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 09:49:54 GMT</pubDate><guid isPermaLink="false">Source code checked in, #fbf09f0bb1a6 20130615094954A</guid></item><item><title>Source code checked in, #21ad8c7e418b</title><link>http://camlex.codeplex.com/SourceControl/changeset/21ad8c7e418b</link><description>Reverse for In operation</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 09:42:08 GMT</pubDate><guid isPermaLink="false">Source code checked in, #21ad8c7e418b 20130615094208A</guid></item><item><title>Source code checked in, #cebea2f3c36f</title><link>http://camlex.codeplex.com/SourceControl/changeset/cebea2f3c36f</link><description>Reverse for In operation</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 09:07:12 GMT</pubDate><guid isPermaLink="false">Source code checked in, #cebea2f3c36f 20130615090712A</guid></item><item><title>Source code checked in, #e48246bab776</title><link>http://camlex.codeplex.com/SourceControl/changeset/e48246bab776</link><description>Reverse for In operation</description><author>sadomovalex</author><pubDate>Sat, 15 Jun 2013 08:12:44 GMT</pubDate><guid isPermaLink="false">Source code checked in, #e48246bab776 20130615081244A</guid></item><item><title>Source code checked in, #3a573a4cfb60</title><link>http://camlex.codeplex.com/SourceControl/changeset/3a573a4cfb60</link><description>&amp;#42; Work over In operator support&amp;#10;&amp;#42; More tests</description><author>sadomovalex</author><pubDate>Fri, 14 Jun 2013 22:20:32 GMT</pubDate><guid isPermaLink="false">Source code checked in, #3a573a4cfb60 20130614102032P</guid></item></channel></rss>