using AutoMapper.QueryableExtensions;
using AgileObjects.ReadableExpressions;
using ExpressionTreeToString;
var configuration = new MapperConfiguration(cfg =>
cfg.AddProfile(new AbProfile());
var mapper = configuration.CreateMapper();
var aQueryable = new[] { new A { StringArrProp = ["1", "2", "3"] } }.AsQueryable();
var bQueryable = aQueryable.ProjectTo<B>(mapper.ConfigurationProvider);
Console.WriteLine("ExpressionTreeToString:");
Console.WriteLine(bQueryable.Expression.ToString(BuiltinRenderer.FactoryMethods, Language.CSharp));
Console.WriteLine("AgileObjects.ReadableExpressions:");
Console.WriteLine(bQueryable.Expression.ToReadableString());
public string[] StringArrProp { get; set; }
public string StringProp { get; set; }
public class AbProfile : Profile
CreateMap<A, B>().ForMember(a => a.StringProp, opt => opt.MapFrom(dto => string.Join(", ", dto.StringArrProp)));