Re-Using a SPQuery = bad Idea
I've just spend an hour trying to find the source of one of those dreaded "One or more field types are not installed properly. Go to the list settings page to delete these fields." error messages, and it turns out that SPQuery can not easily be reused on multiple Lists.
My code was like this:
SPQuery query = new SPQuery(); query.Query = "<some CAML>"; SPListItemCollection ListOneResults = ListOne.GetItems(query); // do more stuff query.Query = "<some other CAML>"; SPListItemCollection ListTwoResults = ListTwo.GetItems(query);
The CAML is fine, but apparently SPQuery has a private List property that links the Query to the first list, causing the second call to be executed against the wrong list. Using "query = new SPQuery()" to overwrite the object completely works.
I'd also like to thank U2U for their CAML Query Builder, which helps in writing the CAML queries.