Se non sapete cosa sono le query CAML è mooolto probabile che non avete ancora avuto a che fare con Sharepoint.
CAML è un linguaggio di query basato su XML, utile per ottenere ListItem da una lista Sharepoint.
Solitamente per specificare una query CAML facciamo così:
SPQuery qry = new SPQuery();
string camlquery = “<OrderBy><FieldRef Name='Country' /></OrderBy><Where><Eq><FieldRef Name='LastName' /><Value Type='Text'>Smith</Value></Eq>”
+ “</Where>”;
qry.Query = camlquery;
Ultimamente però mi è nata un esigenza: creare delle query runtime a seconda delle opzioni del cliente.
Purtroppo speficiare le AND/OR logiche nelle query CAML non è molto smart:
<Where>
<And>
<And>
<And>
<Eq>
<FieldRef Name='LastName' />
<Value Type='Text'>Janssens</Value>
</Eq>
<Geq>
<FieldRef Name='Age' />
<Value Type='Number'>21</Value>
</Geq>
</And>
<Lt>
<FieldRef Name='Age' />
<Value Type='Number'>60</Value>
</Lt>
</And>
<Eq>
<FieldRef Name='Country' />
<Value Type='Lookup'>Belgium</Value>
</Eq>
</And>
</Where>
No bello
Quindi ho aperto VS 2010 e stavo iniziando a scrivere una bella libreria che faceva a caso mio ma, dopo la 3 interfaccia,
ho aperto google ed ho trovato questo codice del 2009:
http://www.codeproject.com/KB/sharepoint/CAMLBuilder-Expressions.aspx
e sembra funzionare egregiamente