protected void Page_Load(object sender, EventArgs e) { ctrlСклад.MasterViewName = Склад.Views.СкладL.Name; ctrlСклад.MasterTypeName = typeof(Склад).AssemblyQualifiedName; ctrlСклад.PropertyToShow = "Название"; if (Session["storagepk"] != null) { var ds = (SQLDataService)DataServiceProvider.DataService; var автомашиныPseudoDetail = new PseudoDetail <Автомашина, Поступление> (Поступление.Views.ПоступлениеE, Information.ExtractPropertyPath <Поступление>(p => p.Автомашина)); var ВладельцыАвтомашинИзПоступленийНаСклад = ds.Query <Автомашина>(Автомашина.Views.АвтомашинаE) .Where(a => автомашиныPseudoDetail.Any(s => s.Склад.__PrimaryKey.ToString() == ctrlСклад.SelectedMasterPK)).ToList() .Select(c => new { Фамилия = c.ВладелецАвтомашины.Фамилия }).Distinct(); //var ВладельцыАвтомашин = АвтомашиныИзПоступленийНаСклад.Select(o => o.ВладелецАвтомашины.Фамилия).ToList(); foreach (var Владелец in ВладельцыАвтомашинИзПоступленийНаСклад) { TableRow tr = new TableRow(); TableCell tc = new TableCell() { Text = Владелец.Фамилия }; tr.Cells.Add(tc); TableВладельцы.Rows.Add(tr); } } //WolvOwners.LimitFunction = LinqToLcs.GetLcs(АвтомашиныИзПоступленийНаСклад.Expression, //Автомашина.Views.АвтомашинаE).LimitFunction; //WolvOwners.LimitFunction = LinqToLcs.GetLcs(ВладельцыАвтомашин.ToList().AsQueryable().Expression, //Человек.Views.ЧеловекE).LimitFunction; }
protected void Page_Load(object sender, EventArgs e) { ctrlСклад.MasterViewName = Склад.Views.СкладL.Name; ctrlСклад.MasterTypeName = typeof(Склад).AssemblyQualifiedName; ctrlСклад.PropertyToShow = "Название"; if (Session["storagepk"] != null) { var ds = (SQLDataService)DataServiceProvider.DataService; var автомашиныPseudoDetail = new PseudoDetail<Автомашина, Поступление> (Поступление.Views.ПоступлениеE, Information.ExtractPropertyPath<Поступление>(p => p.Автомашина)); var ВладельцыАвтомашинИзПоступленийНаСклад = ds.Query<Автомашина>(Автомашина.Views.АвтомашинаE) .Where(a => автомашиныPseudoDetail.Any(s => s.Склад.__PrimaryKey.ToString() == ctrlСклад.SelectedMasterPK)).ToList() .Select(c => new { Фамилия = c.ВладелецАвтомашины.Фамилия }).Distinct(); //var ВладельцыАвтомашин = АвтомашиныИзПоступленийНаСклад.Select(o => o.ВладелецАвтомашины.Фамилия).ToList(); foreach (var Владелец in ВладельцыАвтомашинИзПоступленийНаСклад) { TableRow tr = new TableRow(); TableCell tc = new TableCell() { Text = Владелец.Фамилия }; tr.Cells.Add(tc); TableВладельцы.Rows.Add(tr); } } //WolvOwners.LimitFunction = LinqToLcs.GetLcs(АвтомашиныИзПоступленийНаСклад.Expression, //Автомашина.Views.АвтомашинаE).LimitFunction; //WolvOwners.LimitFunction = LinqToLcs.GetLcs(ВладельцыАвтомашин.ToList().AsQueryable().Expression, //Человек.Views.ЧеловекE).LimitFunction; }
public void GetLcsByPseudoDetailLimitTestSimpleAny2() { var pseudoDetail = new PseudoDetail <Порода, Кошка>( Information.GetView("КошкаE", typeof(Кошка)), Information.ExtractPropertyPath <Кошка>(x => x.Порода)); var dvd = new DetailVariableDef( this.ldef.GetObjectType("Details"), "Кошка__Порода", Information.GetView("КошкаE", typeof(Кошка)), "Порода", new[] { SQLWhereLanguageDef.StormMainObjectKey }); // Все породы, для которых есть кошки, кличка которых не Мурзик. CompareLcsWithLimitCommon( y => pseudoDetail.Any(x => x.Кличка != "Мурзик"), this.ldef.GetFunction("Exist", dvd, ldef.GetFunction(ldef.funcNEQ, new VariableDef(ldef.StringType, "Кличка"), "Мурзик"))); }
/// <summary> /// Пример использования псевдодетейлов в запросах. /// </summary> /// <remarks> /// Псевдодетейлы используются, когда надо наложить ограничения (фильтр) на основной объект относительно мастерового. /// Поскольку навигационные свойства от мастеров к основным объектам данных отсутствуют, необходимо использовать вспомогательный класс /// для создания "виртуальной" связи от мастера к основному объекту. /// </remarks> static void ReadWithPseudoDetail() { var ds = (SQLDataService)DataServiceProvider.DataService; var pd = new PseudoDetail <Сотрудник, Склад>(Склад.Views.СкладE, Information.ExtractPropertyPath <Склад>(s => s.Менеджер)); var sotrs = ds.Query <Сотрудник>(Сотрудник.Views.СотрудникL); var sotrsInSklad = from s in sotrs where pd.Any() select s; Console.WriteLine("Все:"); foreach (var item in sotrs) { Console.WriteLine($"ФИО: {item.Фамилия} {item.Имя} {item.Отчество}"); } Console.WriteLine("На складе:"); foreach (var item in sotrsInSklad) { Console.WriteLine($"ФИО: {item.Фамилия} {item.Имя} {item.Отчество}"); } }
void OnButtonFindClick(Object sender, EventArgs e) { //перечислить владельцев машин, привозящих товар на конкретный склад string warehouse = mealСклад.SelectedMasterPK; SQLDataService ds = (SQLDataService)DataServiceProvider.DataService; var pseudoDetailМашина = new PseudoDetail <Машина, Поступления>( Поступления.Views.ПоступленияE, Information.ExtractPropertyPath <Поступления>(supply => supply.Машина)); var carList = ds.Query <Машина>(Машина.Views.МашинаE).Where(car => pseudoDetailМашина.Any(supply => supply.Склад.__PrimaryKey == warehouse)).ToList(); var result = carList.Select(car => car.ВладелецМашины).ToList(); ctrlList1.DataSource = result; ctrlList1.DataBind(); }
protected void Page_Load(object sender, EventArgs e) { var ds = (SQLDataService)DataServiceProvider.DataService; var товарPseudoDetail = new PseudoDetail <Товар, ТоварНаСкладе> (ТоварНаСкладе.Views.ТоварНаСкладеE, Information.ExtractPropertyPath <ТоварНаСкладе>(p => p.Товар)); var товарынаскладах = ds.Query <Товар>(Товар.Views.ТоварE).Where(t => товарPseudoDetail.Any()).ToList() /*.Select(n => new { Наименование = n.Наименование })*/; var склады = ds.Query <Склад>(Склад.Views.СкладE).ToList(); int количествоскладовсэтимтоваром; TableRow tr; TableCell tc; foreach (Товар товар in товарынаскладах) { количествоскладовсэтимтоваром = 0; foreach (Склад склад in склады) { var товарынаскладе = склад.ТоварНаСкладе.GetAllObjects(); foreach (ТоварНаСкладе товарнаскладе in товарынаскладе) { if (товарнаскладе.Товар.__PrimaryKey.ToString() == товар.__PrimaryKey.ToString()) { количествоскладовсэтимтоваром++; } } } if (количествоскладовсэтимтоваром > 1) { tr = new TableRow(); tc = new TableCell() { Text = товар.Наименование, BorderStyle = BorderStyle.Solid, BorderWidth = 1 }; tr.Cells.Add(tc); TableТоварНаНесколькихСкладах.Rows.Add(tr); } } }
void btnFindOnClick(Object sender, EventArgs e) { var ds = (SQLDataService)DataServiceProvider.DataService; var cars = ds.Query <Машина>(Машина.Views.МашинаE.Name); var поставкиPseudoDetail = new PseudoDetail <Машина, Поставки>( Поставки.Views.ПоставкиE, Information.ExtractPropertyPath <Поставки>(p => p.Машина) ); var машиныВПоставкахНаСклад = ds.Query <Машина>(Машина.Views.МашинаE) .Where(c => поставкиPseudoDetail.Any(p => p.Склад.Название == sklad.Text)).ToList(); var владельцыМашин = машиныВПоставкахНаСклад.Select(c => c.ВладелецМашины).ToList(); ExternalLangDef ldef = ExternalLangDef.LanguageDef; dataList.DataSource = владельцыМашин; dataList.DataBind(); }
void btnFindOnClick(Object sender, EventArgs e) { var ds = (SQLDataService)DataServiceProvider.DataService; var cars = ds.Query<Машина>(Машина.Views.МашинаE.Name); var поставкиPseudoDetail = new PseudoDetail<Машина, Поставки>( Поставки.Views.ПоставкиE, Information.ExtractPropertyPath<Поставки>(p => p.Машина) ); var машиныВПоставкахНаСклад = ds.Query<Машина>(Машина.Views.МашинаE) .Where(c => поставкиPseudoDetail.Any(p => p.Склад.Название == sklad.Text)).ToList(); var владельцыМашин = машиныВПоставкахНаСклад.Select(c => c.ВладелецМашины).ToList(); ExternalLangDef ldef = ExternalLangDef.LanguageDef; dataList.DataSource = владельцыМашин; dataList.DataBind(); }
protected void Page_Load(object sender, EventArgs e) { var ds = (SQLDataService)DataServiceProvider.DataService; var товарPseudoDetail = new PseudoDetail<Товар, ТоварНаСкладе> (ТоварНаСкладе.Views.ТоварНаСкладеE, Information.ExtractPropertyPath<ТоварНаСкладе>(p => p.Товар)); var товарынаскладах = ds.Query<Товар>(Товар.Views.ТоварE).Where(t => товарPseudoDetail.Any()).ToList() /*.Select(n => new { Наименование = n.Наименование })*/; var склады = ds.Query<Склад>(Склад.Views.СкладE).ToList(); int количествоскладовсэтимтоваром; TableRow tr; TableCell tc; foreach (Товар товар in товарынаскладах) { количествоскладовсэтимтоваром = 0; foreach(Склад склад in склады) { var товарынаскладе = склад.ТоварНаСкладе.GetAllObjects(); foreach (ТоварНаСкладе товарнаскладе in товарынаскладе) { if (товарнаскладе.Товар.__PrimaryKey.ToString()==товар.__PrimaryKey.ToString()) { количествоскладовсэтимтоваром++; } } } if (количествоскладовсэтимтоваром>1) { tr = new TableRow(); tc = new TableCell() { Text = товар.Наименование, BorderStyle = BorderStyle.Solid, BorderWidth = 1 }; tr.Cells.Add(tc); TableТоварНаНесколькихСкладах.Rows.Add(tr); } } }
protected void Page_Load(object sender, EventArgs e) { TableRow tr; TableCell tc; var ds = (SQLDataService)DataServiceProvider.DataService; var автомашиныPseudoDetail = new PseudoDetail<Автомашина, Поступление> (Поступление.Views.ПоступлениеE, Information.ExtractPropertyPath<Поступление>(p => p.Автомашина)); var автомашиныизпоступлений = ds.Query<Автомашина>(Автомашина.Views.АвтомашинаE).Where(a=>автомашиныPseudoDetail.Any()).ToList(); var складыPseudoDetail = new PseudoDetail<Склад, Поступление> (Поступление.Views.ПоступлениеE, Information.ExtractPropertyPath<Поступление>(p => p.Склад)); var складыизпоступлений = ds.Query<Склад>(Склад.Views.СкладE).Where(s => складыPseudoDetail.Any()).ToList(); List<Человек> владельцыпривозящиенасвойсклад=new List<Человек>(); foreach (Склад склад in складыизпоступлений) { var владелецпривозящийнасвойсклад = автомашиныизпоступлений.Select(d => d.ВладелецАвтомашины) .Distinct() .Where(a => a.__PrimaryKey.ToString() == склад.ВладелецСклада.__PrimaryKey.ToString()).ToList(); var владелец = владелецпривозящийнасвойсклад.FirstOrDefault(); if (владелец != null) { владельцыпривозящиенасвойсклад.Add(владелец); }; } foreach(Человек человек in владельцыпривозящиенасвойсклад) { tr = new TableRow(); tc = new TableCell() { Text = человек.Фамилия, BorderStyle = BorderStyle.Solid, BorderWidth = 1 }; tr.Cells.Add(tc); TableВладельцыПривозящиеНаСвойСклад.Rows.Add(tr); } }
protected void Page_Load(object sender, EventArgs e) { TableRow tr; TableCell tc; var ds = (SQLDataService)DataServiceProvider.DataService; var автомашиныPseudoDetail = new PseudoDetail <Автомашина, Поступление> (Поступление.Views.ПоступлениеE, Information.ExtractPropertyPath <Поступление>(p => p.Автомашина)); var автомашиныизпоступлений = ds.Query <Автомашина>(Автомашина.Views.АвтомашинаE).Where(a => автомашиныPseudoDetail.Any()).ToList(); var складыPseudoDetail = new PseudoDetail <Склад, Поступление> (Поступление.Views.ПоступлениеE, Information.ExtractPropertyPath <Поступление>(p => p.Склад)); var складыизпоступлений = ds.Query <Склад>(Склад.Views.СкладE).Where(s => складыPseudoDetail.Any()).ToList(); List <Человек> владельцыпривозящиенасвойсклад = new List <Человек>(); foreach (Склад склад in складыизпоступлений) { var владелецпривозящийнасвойсклад = автомашиныизпоступлений.Select(d => d.ВладелецАвтомашины) .Distinct() .Where(a => a.__PrimaryKey.ToString() == склад.ВладелецСклада.__PrimaryKey.ToString()).ToList(); var владелец = владелецпривозящийнасвойсклад.FirstOrDefault(); if (владелец != null) { владельцыпривозящиенасвойсклад.Add(владелец); } ; } foreach (Человек человек in владельцыпривозящиенасвойсклад) { tr = new TableRow(); tc = new TableCell() { Text = человек.Фамилия, BorderStyle = BorderStyle.Solid, BorderWidth = 1 }; tr.Cells.Add(tc); TableВладельцыПривозящиеНаСвойСклад.Rows.Add(tr); } }
/// <summary> /// Проверяем генерацию <see cref="DetailVariableDef"/> из PseudoDetail. /// </summary> /// <param name="pseudoDetail">Псевдодетейл из linq.</param> /// <param name="detailVariableDef">Детейл из lcs</param> private void ComparePseudoDetailWithDetailVariableDef(PseudoDetail <Порода, Кошка> pseudoDetail, DetailVariableDef detailVariableDef) { CompareLcsWithLimitCommon(y => pseudoDetail.Any(), this.ldef.GetFunction(ldef.funcExist, detailVariableDef, true)); }