Working with SharePoint and CAML can be a pain, but in VB.NET it's actually quite beautiful using the XML Literals feature.
Here's a query to get all web page documents in a SharePoint list that have been modified since some date.
Dim query = _
<Query>
<Where>
<And>
<Gt>
<FieldRef Name="Modified"/>
<Value IncludeTimeValue="TRUE" Type="DateTime"><%= lastSyncDate.GetValueOrDefault(DateTime.MinValue).ToString("yyyy-MM-ddTHH:mm:ssZ") %></Value>
</Gt>
<And>
<Eq>
<FieldRef Name="FSObjType"/>
<Value Type="Lookup">0</Value>
</Eq>
<Eq>
<FieldRef Name="DocIcon"/>
<Value Type="Lookup">aspx</Value>
</Eq>
</And>
</And>
</Where>
</Query>
The same query in C# (using Linq to XML) looks like this:
var query =
new XElement("Query",
new XElement("Where",
new XElement("And",
new XElement("Gt",
new XElement("FieldRef",
new XAttribute("Name", "Modified")
),
new XElement("Value",
new XAttribute("IncludeTimeValue", "TRUE"),
new XAttribute("Type", "DateTime"),
DateTime.Now.ToString()
)
),
new XElement("And",
new XElement("Eq",
new XElement("FieldRef",
new XAttribute("Name", "FSObjType")
),
new XElement("Value",
new XAttribute("Type", "Lookup"),
0
)
),
new XElement("Eq",
new XElement("FieldRef",
new XAttribute("Name", "DocIcon")
),
new XElement("Value",
new XAttribute("Type", "Lookup"),
"aspx"
)
)
)
)
)
);