For SPQuery, use SPQuery.Folder to define the folder:
SPFolder folder = list.RootFolder.SubFolders["Folder 1"];
SPQuery query = new SPQuery();
query.Folder = folder;
Then, to define content type, you should include the following condition into your Where clause:
SPContentType contentType = list.ContentTypes["MyContentType"];
query.Query = "<Where><Eq><FieldRef Name='ContentTypeId' /><Value Type='Text'>" + contentType.Id + "</Value></Eq></Where>";
Then, to include all subfolders of "Folder 1", you should specify Scope="Recursive"
in the query ViewAttributes:
query.ViewAttributes = "Scope=\"Recursive\"";
P.S. In case you're using Client Object Model and CamlQuery, the syntax will be a bit different. I.e. instead of Folder
, you will need FolderServerRelativeUrl:
query.FolderServerRelativeUrl = "/Shared Documents/Folder 1";
And also recursive scope is defined as attribute of the View element, which in this case should be included into query.