Write CAML queries in code
In my very first webpart that I wrote I needed to write some CAML queries to filter and sort the lists.
Being the type of guy who hates seeing strings littering my code I searched the net for an API for CAML queries. Thankfully John Holliday had already done the hard work and created CAML.NET. Check out the clean syntax for the CAML code.
1: string typeName = "My Content Type";
2: string simpleQuery =
3: CAML.Query(
4: CAML.Where(
5: CAML.Or(
6: CAML.Eq(
7: CAML.FieldRef("ContentType"),
8: CAML.Value(typeName)),
9: CAML.IsNotNull(
10: CAML.FieldRef("Description")))),
11: CAML.GroupBy(
12: true,
13: CAML.FieldRef("Title",CAML.SortType.Descending)),
14: CAML.OrderBy(
15: CAML.FieldRef("_Author"),
16: CAML.FieldRef("AuthoringDate"),
17: CAML.FieldRef("AssignedTo",CAML.SortType.Ascending))
18: );
Here again you might run into the issue of adding an extra assembly to your deployment, the simple alternative that I took was to include the CAML class directly into me source tree. But remember to keep the copyright and license header in place as stated by the Ms-CL license.
Hopefully Microsoft will release a Linq to CAML library soon, there is already one at CodePlex by a Microsoft employee but what would be better is if it comes with SharePoint.