// must be on MCT
// create the filter
var filter = new LasPointSelectionFilter();
// set the filter geometry
// don't set VisiblePoints, ClassCodes - use the existing layer values
filter.FilterGeometry = geometry;
// perform the selection
var selCount = await lasDatasetLayer.SelectAsync(filter, SelectionCombinationMethod.New);
// set up a second filter and configure the VisiblePoints, ClassCodes
// note that the ClassCodes is using only (4,5)
// whereas the layers setting is (3,4,5)
var filter2 = new LasPointSelectionFilter();
filter2.VisiblePoints = true;
filter2.ClassCodes = new List<int>() { 4, 5 };
filter2.FilterGeometry = geometry;
// perform the selection
selCount = await lasDatasetLayer.SelectAsync(filter2, SelectionCombinationMethod.New);