多表的联合查询
// Create the query definition. IQueryDef queryDef = featureWorkspace.CreateQueryDef(); // Provide a list of tables to join. queryDef.Tables = "streets, altname"; // Set the subfields and the WhereClause (in this case, the join condition). queryDef.SubFields = "streets.NAME, streets.TYPE, altname.ST_NAME, altname.ST_TYPE"; queryDef.WhereClause = "streets.OBJECTID = altname.JOINID"; // Get a cursor of the results and find the indexes of the fields to display. using(ComReleaser comReleaser = new ComReleaser()) { ICursor cursor = queryDef.Evaluate(); comReleaser.ManageLifetime(cursor); int streetsNameIndex = cursor.FindField("streets.NAME"); int streetsTypeIndex = cursor.FindField("streets.TYPE"); int altnameNameIndex = cursor.FindField("altname.ST_NAME"); int altnameTypeIndex = cursor.FindField("altname.ST_TYPE"); // Use the cursor to step through the results, displaying the names and altnames of each // street. IRow row = null; while ((row = cursor.NextRow()) != null) { Console.WriteLine("Street name: {0} {1}. - Alt. name: {2} {3}.", row.get_Value(streetsNameIndex), row.get_Value(streetsTypeIndex), row.get_Value(altnameNameIndex), row.get_Value(altnameTypeIndex)); } }