День добрый, подскажите пожайлуста кто знает как создать динамический объект в .Select...
точнее меня интересует примерно следующее:
var RezultForGrid = RezultListCars.Select(cars => new
{
CarId = cars.Id,
cPhoto = dc.CarPhotos.Where(p => p.Car_CarPhoto == cars.Id).Select(o => o.Id).Count(),
Preselling = cars.PresellingStatus,
EnginePower = cars.EnginePower.Value,
Transmission = cars.Transmission,
CabinType = cars.CabinType,
CabinColor = cars.CabinColor,
PurchaseManager = cars.PurchaseManager,
PresentSale = (dc.SaleOrders.Count(p => p.Car.Id == cars.Id && (p.Status != "Отказ" && p.Status != null)) > 0 ? true : false), InSaleDate = cars.InSaleDate.Value
});
всё ясно всё понятно, но к примеру мне заранее известно что поля CarId, cPhoto и ряд других мне не нужны... а к примеру нужно всего два поля... CabinType и CabinColor... но о том нужны они или нет я могу узнать к примеру по условию...
string FieldsList = "CabinType|CabinColor|";
// тогда если можно было бы написать ->
if (FieldsList.Contains("CabinType"))
CabinType = cars.CabinType,
но так не напишешь... как быть?
C# - язык со строгой типизацией, но в случае необходимости, позволяет использовать динамическую типизацию. Для этого в C# есть тип dynamic. В вашем кокретном случае код для получения коллекции динамически типизированных элементов будет выглядеть примерно так:
var RezultForGrid = new List<dynamic>();
RezultListCars.ToList().ForEach(car => {
dynamic dynamicObject = new System.Dynamic.ExpandoObject();
if (FieldsList.Contains("CabinType")) dynamicObject.CabinType = car.CabinType;
//и так для каждого поля
RezultForGrid.Add(dynamicObject);
});
В результате в переменной RezultForGrid будут храниться нужные Вам объекты с нужным количеством полей, однако при таком подходе вы не сможете использовать IntelliSense на объектах коллекции. В общем случае трудно, конечно, представить такую ситуацию, когда это нужно, но, как говорится, хозяин-барин:)
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости