public static IEnumerable <object> GetSelectedItems(this DataGridContext gridContext) { if (gridContext.DataGridControl.SelectionUnit == SelectionUnit.Cell) { var query = from range in gridContext.SelectedCellRanges from item in gridContext.EnumerateItems(range.ItemRange) select item; return(query.Distinct().OrderBy(item => gridContext.Items.IndexOf(item))); } else { var query = from range in gridContext.SelectedItemRanges from item in gridContext.EnumerateItems(range) select item; return(query.Distinct().OrderBy(item => gridContext.Items.IndexOf(item))); } }