diff --git a/holoviews/core/data/grid.py b/holoviews/core/data/grid.py
index <HASH>..<HASH> 100644
--- a/holoviews/core/data/grid.py
+++ b/holoviews/core/data/grid.py
@@ -548,6 +548,9 @@ class GridInterface(DictInterface):
 
     @classmethod
     def select(cls, dataset, selection_mask=None, **selection):
+        if selection_mask is not None:
+            raise ValueError("Masked selections currently not supported for {0}.".format(cls.__name__))
+
         dimensions = dataset.kdims
         val_dims = [vdim for vdim in dataset.vdims if vdim in selection]
         if val_dims:
diff --git a/holoviews/core/data/xarray.py b/holoviews/core/data/xarray.py
index <HASH>..<HASH> 100644
--- a/holoviews/core/data/xarray.py
+++ b/holoviews/core/data/xarray.py
@@ -537,6 +537,9 @@ class XArrayInterface(GridInterface):
 
     @classmethod
     def select(cls, dataset, selection_mask=None, **selection):
+        if selection_mask is not None:
+            return dataset.data.where(selection_mask, drop=True)
+
         validated = {}
         for k, v in selection.items():
             dim = dataset.get_dimension(k, strict=True)
Support selection masks and expressions on gridded data (#<I>)