dynamic group by expression C#

C#
private static Expression<Func<Menu, string>> GetGroupKey(string property)
{
    var parameter = Expression.Parameter(typeof(Menu));
    var body = Expression.Property(parameter, property);
    return Expression.Lambda<Func<Menu, string>>(body, parameter);
}

// Usage
context.Menus.GroupBy(GetGroupKey(columnName));
Source

Also in C#: