Example #1
0
    static public void Main()
    {
        List <string> UserSelectedItems        = null;
        List <string> InitialUserSelectedItems = "1,2".Split(',').ToList();

        bool userChangedFeatures = UserSelectedItems?.Join(",") != InitialUserSelectedItems.Join(",");

        UserSelectedItems = "1,2".Split(',').ToList();

        userChangedFeatures = UserSelectedItems?.Join(",") != InitialUserSelectedItems.Join(",");

        var project = new Project()
        {
            UI   = WUI.WixUI_ProgressOnly,
            Name = "CustomActionTest",

            Actions = new[]
            {
                new ManagedAction(CustomActions.MyAction, "%this%")
            }
        };

        // Debug.Assert(false);

        Compiler.BuildMsi(project);
    }
Example #2
0
    protected void InitializeHomoryPage()
    {
        var user = CurrentUser;

        //visit.ImageUrl = user.Icon;
        //visitTime.InnerText = DateTime.Now.ToString("HH:mm");
        time.Text = string.Format("{0} {1}", DateTime.Today.ToString("MM月dd日"),
            DateTime.Now.ToString("dddd", new System.Globalization.CultureInfo("zh-cn")));
        board.DataSource = user.Resource.Where(o => o.State == State.启用).OrderByDescending(o => o.Rate).Take(5).ToList();
        board.DataBind();
        var favouritesSource = HomoryContext.Value.UserFavourite.Where(o => o.State == State.启用 && o.UserId == CurrentUser.Id).ToList();
        var favouritesSourceId = favouritesSource.Select(o => o.FavouriteUserId).ToList();
        favourites.DataSource = favouritesSource.Select(o => o.FavouriteUser).Take(3).ToList();
        favourites.DataBind();
        relatives.DataSource =
            HomoryContext.Value.User.Where(o => o.State < State.审核 && o.Type == UserType.教师 || o.Type == UserType.内置 || o.Type == UserType.注册).ToList().Where(o => !favouritesSourceId.Contains(o.Id)).Take(3).ToList();
        relatives.DataBind();

        var t1 = CurrentUser.GroupUser.Where(o => o.State < State.审核).ToList();
        var t2 = t1.Where(o => o.Group.Type == GroupType.教研团队 && o.State < State.审核).ToList().Select(o=>o.GroupId).ToList();
        var t3 = new List<Guid>();
        foreach (var g in t2)
        {
            t3.AddRange(HomoryContext.Value.Catalog.Where(o=>o.TopId==g).Select(o=>o.Id).ToList());
        }
        var t4 = t3.Join(HomoryContext.Value.ViewResourceX, o => o, o => o.CatalogId, (a, b) => b.Id).ToList().Distinct();
        groupRes.DataSource =
            t4.Join(HomoryContext.Value.Resource, o => o, o => o.Id, (a, b) => b)
                .OrderByDescending(o => o.Time)
                .Take(5)
                .ToList();
        groupRes.DataBind();
    }
        private static string GenerateWorkItemClass(WorkItem item)
        {
            var classes = new List<string> {"workitem"};
            classes.AddRange(item.Classes);

            return classes.Join(' ');
        }
        public override DataMatrix ExtractReportData(IProgressObserver progress)
        {
            var service = new TaxaService(User);

            progress.ProgressStart(String.Format("Preparing Darwin Core records for {0} specimens...", _idSet.Count));

            DataMatrix result = null;
            var idSet = new LinkedList<int>(_idSet);
            int chunkSize = 2000;
            var helper = new DarwinCoreReportHelper();
            var chunk = new List<int>();
            var count = 0;
            while (idSet.Count > 0) {
                chunk.Add(idSet.First.Value);
                idSet.RemoveFirst();
                count++;
                if (chunk.Count >= chunkSize || idSet.Count == 0) {

                    var percentComplete = ((double) count / (double) _idSet.Count) * 100;

                    progress.ProgressMessage(String.Format("Preparing Darwin Core records {0} of {1}", count, _idSet.Count), percentComplete);
                    var where = "tblMaterial.intMaterialID in (" + chunk.Join(",") + ")";
                    var dataChunk = helper.RunDwcQuery(service, where);
                    if (result == null) {
                        result = dataChunk;
                    } else {
                        result.AppendMatrix(dataChunk);
                    }
                    chunk = new List<int>();
                }
            }
            progress.ProgressEnd(String.Format("{0} Darwin Core records retrieved.", count));

            return result;
        }
Example #5
0
 public void LoadDefaults(CachedUse use)
 {
     tid.Value = use.UserTarget;
     var catalogs = db.Value.StoreCatalog.Where(o => o.StoreId == StoreId && o.State < 2).OrderBy(o => o.Ordinal).ToList();
     if (CurrentStore.State == StoreState.食品)
     {
         catalogs.RemoveAll(o => o.ParentId == null && o.Name != use.UserTarget);
         catalog.DataSource = catalogs;
         catalog.DataBind();
         catalog.EmbeddedTree.Nodes[0].Expanded = true;
     }
     else
     {
         catalog.DataSource = catalogs;
         catalog.DataBind();
     }
     var ____a = (double?)use.Amount;
     note.Text = use.Note;
     if (use.CatalogId.HasValue && use.CatalogId.Value != Guid.Empty)
     {
         var catalogId = use.CatalogId.Value;
         var node = catalog.EmbeddedTree.FindNodeByValue(catalogId.ToString());
         node.Selected = true;
         node.ExpandParentNodes();
         catalog.SelectedValue = catalogId.ToString();
         var c = db.Value.StoreCatalog.Single(o => o.Id == catalogId);
         var list = new List<Guid>();
         AddChildren(list, c);
         obj.DataSource = list.Join(db.Value.StoreObject, o => o, o => o.CatalogId, (a, b) => b).OrderBy(o => o.Ordinal).ToList();
         obj.DataBind();
         if (use.ObjectId.HasValue && use.ObjectId.Value != Guid.Empty)
         {
             var oid = use.ObjectId.Value;
             var so = db.Value.StoreObject.Single(o => o.Id == oid);
             unit.Text = so.Unit;
             specification.Text = so.Specification;
             stored.Text = so.Amount.ToAmount();
             obj.SelectedIndex = obj.FindItemIndexByValue(use.ObjectId.ToString());
             amount.Value = ____a.HasValue ? ____a.Value : (double)so.Amount;
             if (so.Consumable)
             {
                 act.DataSource = new[] { "领用" };
                 act.DataBind();
             }
             else
             {
                 act.DataSource = new[] { "借用", "领用" };
                 act.DataBind();
             }
             if (!use.Type.Null())
             {
                 act.FindItemByText(use.Type).Selected = true;
             }
         }
         else
         {
             amount.Value = ____a;
         }
     }
 }
        public static void JoinEx1()
        {
            Person magnus = new Person { Name = "Hedlund, Magnus" };
            Person terry = new Person { Name = "Adams, Terry" };
            Person charlotte = new Person { Name = "Weiss, Charlotte" };

            Pet barley = new Pet { Name = "Barley", Owner = terry };
            Pet boots = new Pet { Name = "Boots", Owner = terry };
            Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
            Pet daisy = new Pet { Name = "Daisy", Owner = magnus };

            List<Person> people = new List<Person> { magnus, terry, charlotte };
            List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy };

            // Create a list of Person-Pet pairs where
            // each element is an anonymous type that contains a
            // Pet's name and the name of the Person that owns the Pet.
            var query =
                people.Join(pets,
                            person => person,
                            pet => pet.Owner,
                            (person1, pet1) =>
                                new { OwnerName = person1.Name, Pet = pet1.Name });

            foreach (var obj in query)
            {
                Console.WriteLine(
                    "{0} - {1}",
                    obj.OwnerName,
                    obj.Pet);
            }
        }
Example #7
0
    public void LoadDefaults(CachedIn @in)
    {
        tid.Value = @in.TargetId.ToString();
        var target = db.Value.StoreTarget.Single(o => o.Id == @in.TargetId);
        var catalogs = db.Value.StoreCatalog.Where(o => o.StoreId == StoreId && o.State < 2).OrderBy(o => o.Ordinal).ToList();
        if (CurrentStore.State == StoreState.食品)
        {
            catalogs.RemoveAll(o => o.ParentId == null && o.Name != target.UsageTarget);
            catalog.DataSource = catalogs;
            catalog.DataBind();
            catalog.EmbeddedTree.Nodes[0].Expanded = true;
            age.ReadOnly = true;
            age.Text = target.UsageTarget;
            place.Text = "{0}食堂".Formatted(target.UsageTarget.Substring(0, 2));
        }
        else
        {
            catalog.DataSource = catalogs;
            catalog.DataBind();
            age.ReadOnly = false;
            age.Text = string.Empty;
        }
        amount.Value = (double?)@in.Amount;
        perPrice.Value = (double?)@in.SourcePerPrice;
        fee.Value = (double?)@in.Fee;
        money.Value = (double?)@in.Money;
        if ([email protected]())
            place.Text = @in.Place;
        note.Text = @in.Note;
        time.SelectedDate = (@in.TimeNode.HasValue ? @in.TimeNode.Value : target.TimeNode).ToTime();
        if (@in.CatalogId.HasValue && @in.CatalogId.Value != Guid.Empty)
        {
            var catalogId = @in.CatalogId.Value;
            var node = catalog.EmbeddedTree.FindNodeByValue(catalogId.ToString());
            node.Selected = true;
            node.ExpandParentNodes();
            catalog.SelectedValue = catalogId.ToString();
            var c = db.Value.StoreCatalog.Single(o => o.Id == catalogId);
            var list = new List<Guid>();
            AddChildren(list, c);
            obj.DataSource = list.Join(db.Value.StoreObject, o => o, o => o.CatalogId, (a, b) => b).OrderBy(o => o.Ordinal).ToList();
            obj.DataBind();
            if (@in.ObjectId.HasValue && @in.ObjectId.Value != Guid.Empty)
            {
                var oid = @in.ObjectId.Value;
                var so = db.Value.StoreObject.Single(o => o.Id == oid);
                unit.Text = so.Unit;
                specification.Text = so.Specification;
                stored.Text = so.Amount.ToAmount();
                obj.SelectedIndex = obj.FindItemIndexByValue(@in.ObjectId.ToString());

                var last = so.StoreIn.OrderByDescending(o => o.AutoId).FirstOrDefault();
                if (last != null)
                {
                    perPrice.Value = (double)last.SourcePerPrice;
                }
            }
            age.Text = @in.Age;
        }
    }
Example #8
0
 protected void grid_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
 {
     if (combo.SelectedIndex == -1)
     {
         grid.DataSource = new List<HousingLog>();
     }
     else
     {
         var gid = Guid.Parse(combo.SelectedValue);
         var id = Guid.Parse(combo.SelectedValue).ToString().ToUpper();
         var list = new List<HousingLog>();
         var st = from.SelectedDate.HasValue ? from.SelectedDate.Value : DateTime.MinValue;
         var et = to.SelectedDate.HasValue ? to.SelectedDate.Value : DateTime.Today;
         if (st > et)
         {
             var tt = st;
             st = et;
             et = tt;
         }
         et = et.AddDays(1).AddMilliseconds(-1);
         var uid = Guid.Parse(Session["MemberId"].ToString());
         var root = db.Value.Housing_Member.Count(o => o.UserId == uid && o.DepartmentId == Guid.Empty) > 0;
         using (IStorageEngine engine = STSdb.FromFile(Server.MapPath(string.Format("App_Data/Housing_{0}.record.queryx", id))))
         {
             var table = engine.OpenXTablePortable<Guid, HousingLog>("Record");
             list = table.Where(o => o.Value.时间 >= st && o.Value.时间 <= et).OrderByDescending(o => o.Value.时间).Select(o => o.Value).ToList();
         }
         //if (!root)
         //{
             list = list.Join(db.Value.Housing_Member.Where(x => x.DepartmentId != Guid.Empty), o => o.用户ID, o => o.UserId, (a, b) => a).ToList();
         //}
         grid.DataSource = list;
     }
 }
Example #9
0
 public static void ErrorCallNotFound(this Log log, Location location, Type funcType, List<Type> argTypes)
 {
     if (funcType is ErrorType || argTypes.Exists(x => x is ErrorType)) {
         return;
     }
     log.Error(location, "cannot call " + WrapType(funcType) + " with arguments \"(" + argTypes.Join() + ")\"");
 }
        public PathTemplateProcessor(string path)
        {
            var segments = new List<PathSegment>();
            var searchPath = new List<string>();
            var pathSegments = path.Split(new[] { '/', '\\' });

            if (pathSegments[0] != "**")
                segments.Add(new WildcardPathSegment());

            foreach (var seg in pathSegments)
            {
                var templateSegment = TemplatePathSegment.TryParse(seg);
                PathSegment segment;
                string searchSegment;
                if (seg == "**")
                {
                    segment = new WildcardPathSegment();
                    searchSegment = "**";
                }
                else if (templateSegment != null)
                {
                    segment = templateSegment;
                    searchSegment = "*";
                }
                else
                {
                    segment = new LiteralPathSegment(seg);
                    searchSegment = seg;
                }
                segments.Add(segment);
                searchPath.Add(searchSegment);
            }
            _segments = new LinkedList<PathSegment>(segments);
            _searchString = searchPath.Join(System.IO.Path.DirectorySeparatorChar);
        }
Example #11
0
        void next_Click(object sender, System.EventArgs e)
        {
            bool userChangedFeatures = UserSelectedItems?.Join(",") != InitialUserSelectedItems.Join(",");

            if (userChangedFeatures)
            {
                string itemsToInstall = features.Where(x => x.IsViewChecked())
                                        .Select(x => x.Name)
                                        .Join(",");

                string itemsToRemove = features.Where(x => !x.IsViewChecked())
                                       .Select(x => x.Name)
                                       .Join(",");

                if (itemsToRemove.Any())
                {
                    Runtime.Session["REMOVE"] = itemsToRemove;
                }

                if (itemsToInstall.Any())
                {
                    Runtime.Session["ADDLOCAL"] = itemsToInstall;
                }
            }
            else
            {
                Runtime.Session["REMOVE"]   = "";
                Runtime.Session["ADDLOCAL"] = "";
            }

            SaveUserSelection();
            Shell.GoNext();
        }
Example #12
0
 private void HandleLine(Action<IList<string>> action, IList<string> lines)
 {
     foreach (var l in lines)
     {
         var match = ParseColumns.Match(l);
         if (match.Success)
         {
             var captures = match.Groups[2].Captures;
             var list = new List<string>(captures.Count);
             list.Add(match.Groups[1].Value);
             for (var i = 0; i < captures.Count; i++)
                 list.Add(captures[i].Value);
             try
             {
                 action(list);
             }
             catch
             {
                 try
                 {
                     action(list);
                 }
                 catch
                 {
                     if (this.Info != null)
                         this.Info.Failed.Add(list.Join("  "));
                 }
             }
         }
     }
 }
        static void Main(string[] args)
        {
            // LINQ Using join
            string[] popularProductNames = { "A", "B" };
            var products = new List<Product>() {
                new Product() { Name = "A"},
                new Product() { Name = "A"},
                new Product() { Name = "B"},
                new Product() { Name = "C"},
            };

            // Query syntax
            var qresult = from p in products
                          join n in popularProductNames on p.Name equals n
                          select p;

            Console.WriteLine("Query syntax: {0}", string.Join(", ", qresult.Select(p => p.Name)));

            // Extension syntax
            var eresult = products.Join(popularProductNames, p => p.Name, pp => pp, (p,pp) => p);

            Console.WriteLine("Extension syntax: {0}", string.Join(", ", eresult.Select(p => p.Name)));

            Console.ReadLine();
        }
Example #14
0
    static void Main()
    {
        Person Ivan = new Person{ Name = "Ivan Petrov" };
        Person Gosho = new Person{ Name = "Gosho Georgiev" };
        Person Mara = new Person{ Name = "Kaka Mara" };

        Pet barley = new Pet{ Name = "Barley", Owner = Ivan };
        Pet boots = new Pet{ Name = "Boots", Owner = Ivan };
        Pet whiskers = new Pet{ Name = "Whiskers", Owner = Mara };
        Pet daisy = new Pet{ Name = "Daisy", Owner = Gosho };

        List<Person> people = new List<Person>{ Ivan, Gosho, Mara };
        List<Pet> pets = new List<Pet>{ barley, boots, whiskers, daisy };
        var query =
        //from person in people
        //   join p in pets on person equals p.Owner
        //   select new { OwnerName = person.Name, Pet = p.Name };
        people.Join(pets, person => person,
                    pet => pet.Owner,
                    (person, pet) =>
                    new { OwnerName = person.Name, Pet = pet.Name });

        foreach (var obj in query)
        {
            Console.WriteLine("{0} - {1}",
                              obj.OwnerName,
                              obj.Pet);
        }
    }
Example #15
0
 private void Frm_Main_Load(object sender, EventArgs e)
 {
     List<SaleBill> bills = new List<SaleBill>//创建销售单列表
 {
     new SaleBill("XS001","王*科",Convert.ToDateTime("2010-1-1")),
     new SaleBill("XS002","王*军",Convert.ToDateTime("2010-2-1")),
     new SaleBill("XS003","赵*东",Convert.ToDateTime("2010-3-1"))
 };
     List<SaleProduct> products = new List<SaleProduct>//创建销售商品列表
 {
     new SaleProduct("XS001","冰箱",1,2000),
     new SaleProduct("XS001","洗衣机",2,600),
     new SaleProduct("XS002","电暖风",3,50),
     new SaleProduct("XS002","吸尘器",4,200),
     new SaleProduct("XS003","手机",1,990)
 };
     //关联销售单列表和销售商品列表        
     var query= bills.Join(products,
                        b => b.SaleBillCode,
                        p => p.SaleBillCode,
                        (b, p) => new
                        {
                            销售单号 = b.SaleBillCode,
                            销售日期 = b.SaleDate,
                            销售员 = b.SaleMan,
                            商品名称 = p.ProductName,
                            数量 = p.Quantity,
                            单价 = p.Price,
                            金额 = p.Quantity * p.Price
                        });
     dataGridView1.DataSource = query.ToList();//数据绑定
 }
Example #16
0
 public ApiException(string message, ILogger logger, int statusCode = 500, List <ValidationError> errors = null) :
     base(message)
 {
     this._logger = logger;
     this._logger.LogError(errors?.Join(" +++ "));
     StatusCode = statusCode;
     Errors     = errors;
 }
Example #17
0
		public static string GetCallingArguments(IEnumerable<Expression> pArguments) {
			List<string> values = new List<string>();
			foreach (Expression expression in pArguments) {
				values.Add(expression.Value);
			}

			return values.Join(", ");
		}
		protected override long InternalExecute()
		{
			long iRows                   = 0L;
			List<string>    queryColumns = new List<string>();
			SQLiteParameter idParam      = new SQLiteParameter("@" + this._identityField, DbType.Int64);

			Dictionary<string, SQLiteParameter> parametersCache = new Dictionary<string, SQLiteParameter>
			{
				{ this._identityField.ToUpper(), idParam }
			};

			if (this.TableDefinition != null)
			{
				foreach (FieldDefinition field in this.TableDefinition.Fields.Values)
				{
					parametersCache.Add(field.Name, new SQLiteParameter("@" + field.Name, field.SqlType.ToDbType()));

					queryColumns.Add(field.Name.AsSqlClausePair());
				}

				string updateSql = queryColumns.Join(", ");

				string sql = string.Format(
					"UPDATE [{0}] SET {1} WHERE [{2}] = @{2};",
					this.TableDefinition.Name,
					updateSql,
					this._identityField
				);

				Log.DebugFormat(
					"update: Table: '{0}', Query: '{1}'",
					this.TableDefinition.Name,
					sql
				);

				foreach (ITableRow row in this._rows)
				{
					foreach (KeyValuePair<string, object> pair in row.Values)
					{
						if (parametersCache.ContainsKey(pair.Key))
						{
							parametersCache[pair.Key].Value = pair.Value;
						}
					}

					idParam.Value = row.Values[this._identityField];

					iRows = this.ExecuteNonQuery(
						sql,
						parametersCache.Values
					);
				}
			}

			this._rows.Clear();

			return iRows;
		}
Example #19
0
 public ModifierDespawnOnConditionsInvalid(
     bool?conditionAllowDuringDay   = null,
     bool?conditionAllowDuringNight = null,
     List <string> conditionAllowDuringEnvironments = null)
 {
     ConditionAllowDuringDay          = conditionAllowDuringDay;
     ConditionAllowDuringNight        = conditionAllowDuringNight;
     ConditionAllowDuringEnvironments = conditionAllowDuringEnvironments?.Join();
 }
        public static string[] Split(this string self, string separator, int limit = 0)
        {
            if (self == "") return new string[] { };
            if (separator == null) separator = " ";

            string[] splitted;

            switch (separator)
            {
                case " ":
                    splitted = self.Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
                    break;
                case "":
                    splitted = self.ToCharArray().ToStringArray();
                    break;
                default:
                    splitted = self.Split(new string[] { separator }, StringSplitOptions.None);
                    break;
            }

            if (limit < 0)
            {

            }
            else if (limit == 0 && splitted.Length >= 1)
            {
                var list = splitted.ToList();

                while (list.Last() == "")
                {
                    list.RemoveAt(list.Count - 1);
                }

                splitted = list.ToArray();
            }
            else
            {
                var list = splitted.ToList();
                var outOfLimitList = new List<string>();

                (list.Count - 1).To(limit - 1).Each(idx =>
                {
                    outOfLimitList.Insert(0, list[idx]);
                    list.RemoveAt(idx);
                });

                list.Add(outOfLimitList.Join(separator));

                splitted = list.ToArray();
            }

            return splitted;
        }
        public void Join()
        {
            // Arrange
            object[] objects = { 1, 2, 3 };
            string[] strings = { "a", "b", "c" };
            var enumerable = new List<string> { "a", "b", "c" };

            // Act & Assert
            Assert.Equal("1,2,3", objects.Join(","));
            Assert.Equal("a+b+c", strings.Join("+"));
            Assert.Equal("a;b;c", enumerable.Join(";"));
        }
Example #22
0
        public static string FindPath(IRequestData dictionary)
        {
            var routeData = dictionary.ValuesFor(RequestDataSource.Route);
            var list = new List<string>();

            for (var i = 0; i < 10; i++)
            {
                routeData.Value("Part" + i, o => list.Add(o.RawValue.ToString()));
            }

            return list.Join("/");
        }
Example #23
0
        static void Main(string[] args)
        {
            List<Employee> employees = new List<Employee>()
            {
                new Employee()
                {
                    FirstName = "Luis",
                    LastName = "Felipe",
                    StateId = 1
                },
                new Employee()
                {
                    FirstName = "John",
                    LastName = "Smith",
                    StateId = 2
                },
                new Employee()
                {
                    FirstName = "Deadpool",
                    LastName = "NULL!",
                    StateId = 1
                }
            };

            List<State> states = new List<State>()
            {
                new State()
                {
                    StateId = 1,
                    StateName = "RN"
                },
                new State()
                {
                    StateId = 2,
                    StateName = "SP"
                } };

            /* The parameters of the Join method are a collection that implements IEnumerable interface, 
            the following keys of each group you want to match, then the condition match (attribute1, attribute2)
            in a lambda expression of a new created object with attributes from both matched "rows" */
            var employeeByState = employees.Join(states,
                                                 e => e.StateId,
                                                 s => s.StateId,
                                                 (e, s) => new { e.LastName, s.StateName });
            foreach (var employee in employeeByState)
            {
                Console.WriteLine(String.Format("Last Name: {0}, State Name: {1}", employee.LastName, employee.StateName));
            }
        }
Example #24
0
        private string writeForm()
        {
            var document = new XmlDocument();
            document.LoadXml(writeXml());

            var list = new List<string>();

            foreach (XmlElement element in document.DocumentElement.ChildNodes)
            {
                var data = "{0}={1}".ToFormat(element.Name, element.InnerText.UrlEncode());
                list.Add(data);
            }

            return list.Join("&");
        }
Example #25
0
        public void AssertIsValid()
        {
            var messages = new List<string>();
            if (ApplicationBase.IsEmpty())
            {
                messages.Add("ApplicationBase must be a valid folder");
            }

            if (EnvironmentClassName.IsEmpty() && AssemblyName.IsEmpty())
            {
                messages.Add("Either EnvironmentClassName or AssemblyName must be set");
            }

            if (messages.Any())
            {
                throw new EnvironmentRunnerException(messages.Join("; "));
            }
        }
Example #26
0
 public virtual string FilterString( FilterSet fs )
 {
     if( fs.Rules.Count == 0 )
         return null;
     List<string> items = new List<string>();
     foreach( IFilterRule r in fs.Rules )
     {
         if( r is FilterInfo )
         {
             items.Add( FilterString( r as FilterInfo) );
         }
         else if( r is FilterSet )
         {
             items.Add( "(" + FilterString( r as FilterSet ) + ")" );
         }
     }
     return items.Join( fs.JoinOperator == FilterJoinOperator.And ? " AND " : " OR " );
 }
    void BuildUpNameDictionary(bool createTemporaryAssemblies, List<string> preloadOrder)
    {
        var orderedResources = preloadOrder
            .Join(ModuleDefinition.Resources, p => p.ToLowerInvariant(),
            r =>
            {
                var parts = r.Name.Split('.');
                string ext, name;
                GetNameAndExt(parts, out name, out ext);
                return name;
            }, (s, r) => r)
            .Union(ModuleDefinition.Resources.OrderBy(r => r.Name))
            .Where(r => r.Name.StartsWith("costura"))
            .Select(r => r.Name);

        foreach (var resource in orderedResources)
        {
            var parts = resource.Split('.');

            string ext, name;
            GetNameAndExt(parts, out name, out ext);

            if (parts[0] == "costura")
            {
                if (createTemporaryAssemblies)
                    AddToList(preloadListField, resource);
                else
                {
                    if (ext == "pdb")
                        AddToDictionary(symbolNamesField, name, resource);
                    else
                        AddToDictionary(assemblyNamesField, name, resource);
                }
            }
            else if (parts[0] == "costura32")
            {
                AddToList(preload32ListField, resource);
            }
            else if (parts[0] == "costura64")
            {
                AddToList(preload64ListField, resource);
            }
        }
    }
        public dynamic GetNamesAndType(List<Customer> customerList,
                                        List<CustomerType> customerTypeList)
        {
            var query = customerList.Join(customerTypeList,
                c => c.CustomerTypeId,
                ct => ct.CustomerTypeId,
                (c, ct) => new
                {
                    Name = c.LastName + ", " + c.FirstName,
                    CustomerTypeName = ct.TypeName
                });

            foreach (var item in query)
            {
                Console.WriteLine(item.ToString());
            }

            return query;
        }
Example #29
0
        public static void Run()
        {
            Console.Out.WriteLine(1.RespondTo("ToString"));
            Console.Out.WriteLine(1.Send("ToString").GetType());

            Console.Out.WriteLine(1.RespondTo("Whoops"));
            try
            {
                Console.Out.WriteLine(1.Send("Whoops", 42, "hi there"));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            var list = new List<string>();
            list.Send("Add", "hello there");
            Console.Out.WriteLine(list.Join(", "));
        }
Example #30
0
 private static bool WriteStatus(ReferenceStatus status)
 {
   List<string> flags = new List<string>();
   if (status.IsProjectMissing)
   {
     flags.Add("Missing Project");
   }
   if (status.IsReferencedVersionMissing)
   {
     flags.Add("Missing Version");
   }
   if (status.IsHealthy)
   {
     if (status.IsOutdated)
     {
       flags.Add("Outdated");
     }
     if (!status.IsReferencedVersionInstalled)
     {
       flags.Add("NeedsUnpackage");
     }
     if (!status.IsAnyVersionInstalled)
     {
       flags.Add("NothingInstalled");
     }
     else if (status.IsOlderVersionInstalled)
     {
       flags.Add("OlderVersionInstalled");
     }
   }
   List<string> parts = new List<string>();
   parts.Add("  " + status.DependencyName);
   if (!status.ReferencedVersionTags.Empty)
   {
     parts.Add("(" + status.ReferencedVersionTags + ")");
   }
   if (flags.Count > 0)
   {
     parts.Add("(" + flags.Join(", ") + ")");
   }
   Console.WriteLine(parts.ToArray().Join(" "));
   return !status.IsHealthy;
 }
Example #31
0
 public override void Execute(IList<string> parameters)
 {
     var pins = new List<string> ();
     foreach (var i in Application.Configuration.GetDevices ().Values) {
         if (i.PIN.IsEmpty ()) {
             Console.Error.WriteLine ("No PIN configured for device '{0}'--ignoring.", i.Name);
         }
         pins.Add (String.Format ("-devicepin {0}", i.PIN));
     }
     var pw = Application.Configuration.CSKPassword;
     while (pw.IsEmpty ()) {
         pw = Extensions.ReadPassword ("CSK Password (will not echo): ");
     }
     Directory.GetParent (Application.Configuration.DebugToken).Create ();
     var cmd = String.Format ("{0} -storepass \"{2}\" {1} {3}",
                              Application.GetToolPath ("blackberry-debugtokenrequest"),
                              pins.Join (" "),
                              pw,
                              Application.Configuration.DebugToken);
     Run (cmd);
 }
Example #32
0
		public static string ConvertModifiers(IEnumerable<string> pModifiers, Dictionary<string , string> pReplaceable = null) {
			List<string> mods = new List<string>();
			foreach (string modifier in pModifiers) {
				string o;
				string mod = modifier;
				if (_flashModifiers.TryGetValue(modifier, out o)) {
					if (string.IsNullOrEmpty(o)) continue;
					mod = o;
				}

				if (pReplaceable != null) {
					if (pReplaceable.TryGetValue(mod, out o))
						mod = o;
				}

				mods.Add(mod);
			}

			string ret = mods.Join(" ");
			return string.IsNullOrEmpty(ret) ? string.Empty : ret + " ";
		}
        static void Main(string[] args)
        {
            List<StudentSpecialty> specialties = new List<StudentSpecialty>();
            List<Student> students = new List<Student>();

            string input = Console.ReadLine();
            while (input != "Students:")
            {
                var inputArgs = input.Split();
                var specialty = new StudentSpecialty(
                    inputArgs[0].Trim() + " " + inputArgs[1].Trim(), 
                    long.Parse(inputArgs[2].Trim()));
                specialties.Add(specialty);
                input = Console.ReadLine();
            }

            input = Console.ReadLine();
            while (input != "END")
            {
                var inputArgs = input.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
                var student = new Student(
                    inputArgs[1].Trim() + " " + inputArgs[2].Trim(), 
                    long.Parse(inputArgs[0].Trim()));
                students.Add(student);
                input = Console.ReadLine();
            }

            var result =
                students.Join(
                    specialties, 
                    student => student.Number, 
                    specialty => specialty.SpecialtyNumber, 
                    (student, specialty) => new { student.Name, student.Number, specialty.SpecialtyName })
                    .OrderBy(x => x.Name);

            foreach (var obj in result)
            {
                Console.WriteLine("{0} {1} {2}", obj.Name, obj.Number, obj.SpecialtyName);
            }
        }
        public string ToSql(NpgsqlCommand command)
        {
            var wheres = _expression
                .QueryModel
                .BodyClauses
                .OfType<WhereClause>()
                .Select(x => x.Predicate)
                .ToArray();

            if (!wheres.All(x => x is BinaryExpression || x is SubQueryExpression))
            {
                throw new NotSupportedException();
            }

            var binaryExpressions = wheres.OfType<BinaryExpression>().ToArray();
            var subQueryExpressions = wheres.OfType<SubQueryExpression>().ToArray();

            var conditions = new List<string>();
            conditions.AddRange(buildBinary(binaryExpressions, command));
            conditions.AddRange(subQueryExpressions.Select(s => buildSubQuery(s, command)));
            return conditions.Join(" AND ");
        }
        private static void Joins()
        {
            var employees = new List <Employee> {
                new Employee {
                    ID = 1, Name = "Scott", DepartmentID = 1
                },
                new Employee {
                    ID = 2, Name = "Poonam", DepartmentID = 1
                },
                new Employee {
                    ID = 3, Name = "Andy", DepartmentID = 2
                }
            };

            var departments = new List <Department> {
                new Department {
                    ID = 1, Name = "Engineering"
                },
                new Department {
                    ID = 2, Name = "Sales"
                },
                new Department {
                    ID = 3, Name = "Skunkworks"
                }
            };

            var query1 =
                from d in departments
                join e in employees on d.ID equals e.DepartmentID
                select new
            {
                DepartmentName = d.Name,
                EmployeeName   = e.Name
            };

            var query2 =
                departments.Join(employees,
                                 d => d.ID,
                                 e => e.DepartmentID,
                                 (d, e) => new
            {
                DepartmentName = d.Name,
                EmployeeName   = e.Name
            });

            var query3 =
                departments.GroupJoin(employees,
                                      d => d.ID,
                                      e => e.DepartmentID,
                                      (d, eg) => new
            {
                DepartmentName = d.Name,
                Employees      = eg
            });

            var query4 =
                from d in departments
                join e in employees on d.ID equals e.DepartmentID
                into eg
                select new
            {
                DepartmentName = d.Name,
                Employees      = eg
            };
        }
Example #36
0
 void GenerateStage()
 {
     stage++;
     if (stage == 8)
     {
         for (int i = 0; i < Displays.Length; i++)
         {
             Digits[i].text = "";
         }
         phaseTwo = StartCoroutine(PhaseTwo());
         return;
     }
     directions.Clear();
     directionsSorted.Clear();
     directions = Enumerable.Range(0, 10).ToList();
     directions.Shuffle();
     directions = directions.Take(4).ToList();
     directionsSorted.AddRange(directions);
     directionsSorted.Sort();
     Debug.LogFormat(@"[Navinums #{0}] Stage {1} - Directions are in reading order: {2}.", moduleId, stage + 1, directions.Join(", "));
     Debug.LogFormat(@"[Navinums #{0}] Stage {1} - Correct direction to press is: {2}.", moduleId, stage + 1, directionsSorted[lookUp[center - 1][stage] - 1]);
     for (int i = 0; i < Displays.Length; i++)
     {
         Digits[i].text = i < 4 ? directions[i].ToString() : center.ToString();
     }
 }
Example #37
0
        public static IFuse Initialize(string programName, List <string> args)
        {
            var systemId  = SystemGuidLoader.LoadOrCreateOrEmpty();
            var sessionId = Guid.NewGuid();

            var report = ReportFactory.GetReporter(systemId, sessionId, programName);

            AppDomain.CurrentDomain.ReportUnhandledExceptions(report);
            report.Info("Initializing with arguments '" + args.Join(" ") + "'");

            // Report running mono version
            Type type = Type.GetType("Mono.Runtime");

            if (type != null)
            {
                MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
                if (displayName != null)
                {
                    report.Info("Running with Mono " + displayName.Invoke(null, null));
                }
            }

            EnsureSpecialFoldersExist();

            var fuseExeOverride = args
                                  .TryParse("override-fuse-exe")
                                  .SelectMany(AbsoluteFilePath.TryParse);

            var rootDirSetByArgs = Optional.None <AbsoluteDirectoryPath>();            /*args
                                                                                        * .FirstOrNone(a => a.StartsWith("fuse-root"))
                                                                                        * .Select(a => a.Substring(a.IndexOf("=", StringComparison.InvariantCulture) + 1, a.Length - 1 - a.IndexOf("=", StringComparison.InvariantCulture)))
                                                                                        * .Select(AbsoluteDirectoryPath.Parse);*/

            var os = Platform.OperatingSystem;

            var fuseRoot = rootDirSetByArgs
                           .Or(() => GetFuseRoot(os))
                           .OrThrow(new FuseRootDirectoryWasNotFound());

            if (os != OS.Mac && os != OS.Windows)
            {
                throw new UnsupportedPlatformException(os);
            }

            var isMac = os == OS.Mac;


            var mono = isMac ? Optional.Some(FindMonoExe(fuseRoot)) : Optional.None();

            var codeAssistanceService = new FileName("Fuse.CodeAssistanceService.exe");

            var fuseExe = fuseExeOverride.Or(isMac
                                ? fuseRoot / "MacOS" / new FileName("Fuse")
                                : fuseRoot / new FileName("Fuse.exe"));

            var unoExe = FindUnoExe(fuseRoot);

            var version = SystemInfoFactory.GetBuildVersion(typeof(FuseApi).Assembly);


            var impl = new FuseImpl
            {
                FuseRoot = fuseRoot,
                Version  = version,

                UnoExe  = unoExe,
                FuseExe = fuseExe,
                MonoExe = mono,

                Fuse = ExternalApplication.FromNativeExe(fuseExe),

                // Tools

                Designer = isMac
                                        ? ExternalApplication.FromAppBundle(fuseRoot / new FileName("Fuse Studio.app"))
                                        : ExternalApplication.FromNativeExe(fuseRoot / new FileName("Fuse Studio.exe")),

                // Services

                CodeAssistance = isMac
                                        ? ExternalApplication.FromMonoExe(fuseRoot / "MonoBundle" / codeAssistanceService, mono)
                                        : ExternalApplication.FromNativeExe(fuseRoot / codeAssistanceService),

                Tray = isMac
                                        ? ExternalApplication.FromNativeExe(fuseRoot / "Fuse Tray.app" / "Contents" / "MacOS" / new FileName("Fuse Tray"))
                                        : ExternalApplication.FromNativeExe(fuseRoot / new FileName("Fuse-Tray.exe")),

                LogServer = isMac
                                        ? ExternalApplication.FromNativeExe(fuseRoot / new FileName("fuse-logserver"))
                                        : null,

                // Uno

                Uno = isMac
                                        ? ExternalApplication.FromMonoExe(unoExe, mono)
                                        : ExternalApplication.FromNativeExe(unoExe),

                // System paths

                UserDataDir = isMac
                                        ? AbsoluteDirectoryPath.Parse(Environment.GetFolderPath(Environment.SpecialFolder.Personal)) / ".fuse"
                                        : AbsoluteDirectoryPath.Parse(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)) /
                              "Fusetools" / "Fuse",

                ProjectsDir =
                    AbsoluteDirectoryPath.Parse(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)) / "Fuse",

                SystemId  = systemId,
                SessionId = sessionId,
                Report    = report
            };

            var partial = args.Remove("--partial") | args.Remove("-p");

            if (!partial)
            {
                impl.CheckCompleteness();
            }

            // Set assembly configuration for .unoconfig, to be able to find correct bin/$(Configuration) directories.
#if DEBUG
            UnoConfigFile.Constants["Configuration"] = "Debug";
#else
            UnoConfigFile.Constants["Configuration"] = "Release";
#endif
            return(impl);
        }
Example #38
0
        private static void buildQueryForStreamMethod(EventGraph graph, GeneratedType builderType)
        {
            var arguments = new List <string>
            {
                graph.StreamIdentity == StreamIdentity.AsGuid
                    ? $"stream.{nameof(StreamAction.Id)}"
                    : $"stream.{nameof(StreamAction.Key)}"
            };

            if (graph.TenancyStyle == TenancyStyle.Conjoined)
            {
                arguments.Add($"stream.{nameof(StreamAction.TenantId)}");
            }

            builderType.MethodFor(nameof(EventDocumentStorage.QueryForStream))
            .Frames.Code($"return new Marten.Generated.{StreamStateSelectorTypeName}({arguments.Join(", ")});");
        }
Example #39
0
        public object UploadAndRestore()
        {
            var files = Context.Request.Files.ToList();

            if (files.Empty())
            {
                throw new BadRequestException("file must be provided");
            }

            var file      = files.First();
            var extension = Path.GetExtension(file.Name);

            if (!ValidExtensions.Contains(extension))
            {
                throw new UnsupportedMediaTypeException($"Invalid extension, must be one of: {ValidExtensions.Join(", ")}");
            }

            var path = Path.Combine(_appFolderInfo.TempFolder, $"lidarr_backup_restore{extension}");

            _diskProvider.SaveStream(file.Value, path);
            _backupService.Restore(path);

            // Cleanup restored file
            _diskProvider.DeleteFile(path);

            return(new
            {
                RestartRequired = true
            });
        }
Example #40
0
        protected virtual StringBuilder GetOutputForType(ITypeInfo typeInfo)
        {
            string module = null;

            if (typeInfo.Module != null)
            {
                module = typeInfo.Module;
            }
            else if (this.Emitter.AssemblyInfo.Module != null)
            {
                module = this.Emitter.AssemblyInfo.Module;
            }

            var fileName = typeInfo.FileName;

            if (fileName.IsEmpty() && this.Emitter.AssemblyInfo.OutputBy != OutputBy.Project)
            {
                switch (this.Emitter.AssemblyInfo.OutputBy)
                {
                case OutputBy.ClassPath:
                    fileName = typeInfo.Type.FullName;
                    break;

                case OutputBy.Class:
                    fileName = this.GetIteractiveClassPath(typeInfo);
                    break;

                case OutputBy.Module:
                    fileName = module;
                    break;

                case OutputBy.NamespacePath:
                case OutputBy.Namespace:
                    fileName = this.GetNamespaceFilename(typeInfo);
                    break;

                default:
                    break;
                }

                var isPathRelated = this.Emitter.AssemblyInfo.OutputBy == OutputBy.ClassPath ||
                                    this.Emitter.AssemblyInfo.OutputBy == OutputBy.NamespacePath;

                if (fileName.IsNotEmpty() && isPathRelated)
                {
                    fileName = fileName.Replace('.', System.IO.Path.DirectorySeparatorChar);

                    if (this.Emitter.AssemblyInfo.StartIndexInName > 0)
                    {
                        fileName = fileName.Substring(this.Emitter.AssemblyInfo.StartIndexInName);
                    }
                }
            }

            if (fileName.IsEmpty() && this.Emitter.AssemblyInfo.FileName != null)
            {
                fileName = this.Emitter.AssemblyInfo.FileName;
            }

            if (fileName.IsEmpty())
            {
                fileName = AssemblyInfo.DEFAULT_FILENAME;
            }

            // Apply lowerCamelCase to filename if set up in bridge.json (or left default)
            if (this.Emitter.AssemblyInfo.FileNameCasing == FileNameCaseConvert.CamelCase)
            {
                var sepList = new string[] { ".", System.IO.Path.DirectorySeparatorChar.ToString(), "\\", "/" };

                // Populate list only with needed separators, as usually we will never have all four of them
                var neededSepList = new List <string>();

                foreach (var separator in sepList)
                {
                    if (fileName.Contains(separator.ToString()) && !neededSepList.Contains(separator))
                    {
                        neededSepList.Add(separator);
                    }
                }

                // now, separating the filename string only by the used separators, apply lowerCamelCase
                if (neededSepList.Count > 0)
                {
                    foreach (var separator in neededSepList)
                    {
                        var stringList = new List <string>();

                        foreach (var str in fileName.Split(separator[0]))
                        {
                            stringList.Add(str.ToLowerCamelCase());
                        }

                        fileName = stringList.Join(separator);
                    }
                }
                else
                {
                    fileName = fileName.ToLowerCamelCase();
                }
            }

            // Append '.js' extension to file name at translator.Outputs level: this aids in code grouping on files
            // when filesystem is not case sensitive.
            if (!fileName.ToLower().EndsWith("." + Bridge.Translator.AssemblyInfo.JAVASCRIPT_EXTENSION))
            {
                fileName += "." + Bridge.Translator.AssemblyInfo.JAVASCRIPT_EXTENSION;
            }

            switch (this.Emitter.AssemblyInfo.FileNameCasing)
            {
            case FileNameCaseConvert.Lowercase:
                fileName = fileName.ToLower();
                break;

            default:
                var lcFileName = fileName.ToLower();

                // Find a file name that matches (case-insensitive) and use it as file name (if found)
                // The used file name will use the same casing of the existing one.
                foreach (var existingFile in this.Emitter.Outputs.Keys)
                {
                    if (lcFileName == existingFile.ToLower())
                    {
                        fileName = existingFile;
                    }
                }

                break;
            }

            IEmitterOutput output = null;

            if (this.Emitter.Outputs.ContainsKey(fileName))
            {
                output = this.Emitter.Outputs[fileName];
            }
            else
            {
                output = new EmitterOutput(fileName);
                this.Emitter.Outputs.Add(fileName, output);
            }

            if (module == null)
            {
                return(output.NonModuletOutput);
            }

            if (module == "")
            {
                module = Bridge.Translator.AssemblyInfo.DEFAULT_FILENAME;
            }

            if (output.ModuleOutput.ContainsKey(module))
            {
                this.Emitter.CurrentDependencies = output.ModuleDependencies[module];
                return(output.ModuleOutput[module]);
            }

            StringBuilder moduleOutput = new StringBuilder();

            output.ModuleOutput.Add(module, moduleOutput);
            var dependencies = new List <IPluginDependency>();

            output.ModuleDependencies.Add(module, dependencies);

            if (typeInfo.Dependencies.Count > 0)
            {
                dependencies.AddRange(typeInfo.Dependencies);
            }

            this.Emitter.CurrentDependencies = dependencies;

            return(moduleOutput);
        }
Example #41
0
        /// <summary> Attempts to compile source code from the given file. </summary>
        /// <remarks> Logs errors to player (summarised) and to IScripting.ErrorPath. </remarks>
        public CompilerResults Compile(string srcPath, CompilerParameters args, Player p)
        {
            int             offset  = 0;
            List <string>   source  = ReadSource(srcPath, args, ref offset);
            CompilerResults results = CompileSource(source.Join(Environment.NewLine), args);

            if (!results.Errors.HasErrors)
            {
                return(results);
            }

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("############################################################");
            sb.AppendLine("Errors when compiling " + srcPath);
            sb.AppendLine("############################################################");
            sb.AppendLine();

            foreach (CompilerError err in results.Errors)
            {
                string type = err.IsWarning ? "Warning" : "Error";
                sb.AppendLine(type + " on line " + (err.Line + offset) + ":");

                if (err.Line > 0)
                {
                    sb.AppendLine(source[err.Line - 1]);
                }
                if (err.Column > 0)
                {
                    sb.Append(' ', err.Column - 1);
                }
                sb.AppendLine("^-- " + type + " #" + err.ErrorNumber + " - " + err.ErrorText);

                sb.AppendLine();
                sb.AppendLine("-------------------------");
                sb.AppendLine();
            }

            int logged = 0;

            foreach (CompilerError err in results.Errors)
            {
                string type = err.IsWarning ? "Warning" : "Error";
                p.Message("%W{0} #{1} on line {2} - {3}", type, err.ErrorNumber, err.Line + offset, err.ErrorText);

                logged++;
                if (logged >= maxLog)
                {
                    break;
                }
            }
            if (results.Errors.Count > maxLog)
            {
                p.Message(" %W.. and {0} more", results.Errors.Count - maxLog);
            }

            using (StreamWriter w = new StreamWriter(ErrorPath, true)) {
                w.Write(sb.ToString());
            }
            return(results);
        }
Example #42
0
        static void Main(string[] args)
        {
            var EmpList = new List <Emp>()
            {
                new Emp {
                    Empno = 7839, Ename = "KING", Job = "PRESIDENT", Hiredate = "17-NOV-81", Sal = 5000, Deptno = 10
                },
                new Emp {
                    Empno = 7698, Ename = "BLAKE", Job = "MANAGER", Mgr = 7839, Hiredate = "1-MAY-81", Sal = 2850, Deptno = 30
                },
                new Emp {
                    Empno = 7782, Ename = "CLARK", Job = "MANAGER", Mgr = 7839, Hiredate = "9-JUN-81", Sal = 2450, Deptno = 10
                },
                new Emp {
                    Empno = 7566, Ename = "JONES", Job = "MANAGER", Mgr = 7839, Hiredate = "2-APR-81", Sal = 2975, Deptno = 20
                },
                new Emp {
                    Empno = 7654, Ename = "MARTIN", Job = "SALESMAN", Mgr = 7698, Hiredate = "28-SEP-81", Sal = 1250, Comm = 1400, Deptno = 30
                },
                new Emp {
                    Empno = 7499, Ename = "ALLEN", Job = "SALESMAN", Mgr = 7698, Hiredate = "20-FEB-81", Sal = 1600, Comm = 300, Deptno = 30
                },
                new Emp {
                    Empno = 7844, Ename = "TURNER", Job = "SALESMAN", Mgr = 7698, Hiredate = "8-SEP-81", Sal = 1500, Comm = 0, Deptno = 30
                },
                new Emp {
                    Empno = 7900, Ename = "JAMES", Job = "CLERK", Mgr = 7698, Hiredate = "3-DEC-81", Sal = 950, Deptno = 30
                },
                new Emp {
                    Empno = 7521, Ename = "WARD", Job = "SALESMAN", Mgr = 7698, Hiredate = "22-FEB-81", Sal = 1250, Comm = 500, Deptno = 30
                },
                new Emp {
                    Empno = 7902, Ename = "FORD", Job = "ANALYST", Mgr = 7566, Hiredate = "3-DEC-81", Sal = 3000, Deptno = 20
                },
                new Emp {
                    Empno = 7369, Ename = "SMITH", Job = "CLERK", Mgr = 7902, Hiredate = "17-DEC-80", Sal = 800, Deptno = 20
                },
                new Emp {
                    Empno = 7788, Ename = "SCOTT", Job = "ANALYST", Mgr = 7566, Hiredate = "09-DEC-82", Sal = 3000, Deptno = 20
                },
                new Emp {
                    Empno = 7876, Ename = "ADAMS", Job = "CLERK", Mgr = 7788, Hiredate = "12-JAN-83", Sal = 1100, Deptno = 20
                },
                new Emp {
                    Empno = 7934, Ename = "MILLER", Job = "CLERK", Mgr = 7782, Hiredate = "23-JAN-82", Sal = 1300, Deptno = 10
                },
            };

            var DeptList = new List <Dept>()
            {
                new Dept {
                    Deptno = 10, Dname = "ACCOUNTING", Loc = "NEW YORK"
                },
                new Dept {
                    Deptno = 20, Dname = "RESEARCH", Loc = "DALLAS"
                },
                new Dept {
                    Deptno = 30, Dname = "SALES", Loc = "CHICAGO"
                },
                new Dept {
                    Deptno = 40, Dname = "OPERATIONS", Loc = "BOSTON"
                }
            };

            //DeptTenEmp(EmpList);
            //NameStartWithSEmp(EmpList);
            //CommZeroEmp(EmpList);
            //Dept1020Emp(EmpList);
            //Dept10MgrEmp(EmpList);

            //SumDept10Sal(EmpList);

            //CountDept10Emp(EmpList);

            //Top3SalaryEmp(EmpList);

            //var countDeptwise = EmpList.Count(e => e.Deptno).GroupBy(e => e.Deptno);

            //ScottDetails(EmpList);
            //var scottSal = EmpList.Where(e1 => e1.Ename == "SCOTT").Select(e1=>e1.Sal);
            //ConsoleWriteLine(scottSal.);
            // DisplayEmployees(scottSal);
            //var empSalAsScott = EmpList.Where(e => e.Sal == );

            //Inner join(all the employees and there dept Name)
            var innerJoinEmp = EmpList.Join(DeptList,
                                            e => e.Deptno,
                                            d => d.Deptno,
                                            (e, d) =>
                                            new{
                EmpNo  = e.Empno,
                EName  = e.Ename,
                DeptNo = e.Deptno,
                DName  = d.Dname
            });

            var leftJoinEmp = DeptList.Join(EmpList,
                                            d => d.Deptno,
                                            e => e.Deptno,
                                            (d, e) =>
                                            new {
                DeptNo = d.Deptno,
                EName  = e.Ename
            });

            var selfJoinEmp = EmpList.Join(EmpList,
                                           e1 => e1.Mgr,
                                           e2 => e2.Empno,
                                           (e1, e2) =>
                                           new {
                EName   = e1.Ename,
                Manager = e2.Ename,
            })
                              .OrderBy(s => s.Manager);

            var multipleJoinEmp = EmpList.Join(EmpList,
                                               e1 => e1.Mgr,
                                               e2 => e2.Empno,
                                               (e1, e2) =>
                                               new
            {
                EName   = e1.Ename,
                Manager = e2.Ename,
                DeptNo  = e1.Deptno
            }).Join(DeptList,
                    s => s.DeptNo,
                    d => d.Deptno,
                    (s, d) =>
                    new
            {
                EName   = s.EName,
                DName   = d.Dname,
                Manager = s.Manager
            }
                    );

            foreach (var x in innerJoinEmp)
            {
                Console.WriteLine(x.EmpNo + " " + x.EName + " " + x.DeptNo + " " + x.DName);
            }
            Console.WriteLine();

            foreach (var x in leftJoinEmp)
            {
                Console.WriteLine(x.DeptNo + " " + x.EName);
            }
            Console.WriteLine();


            foreach (var x in selfJoinEmp)
            {
                Console.WriteLine(x.EName + " " + x.Manager);
            }
            Console.WriteLine();

            foreach (var x in multipleJoinEmp)
            {
                Console.WriteLine(x.EName + " " + x.DName + " " + x.Manager);
            }
            Console.WriteLine();
        }
Example #43
0
        /// <summary>获取提供者工厂</summary>
        /// <param name="assemblyFile"></param>
        /// <param name="className"></param>
        /// <param name="ignoreError"></param>
        /// <returns></returns>
        public static DbProviderFactory GetProviderFactory(String assemblyFile, String className, Boolean ignoreError = false)
        {
            try
            {
                var links = new List <String>();
                var name  = Path.GetFileNameWithoutExtension(assemblyFile);
                if (!name.IsNullOrEmpty())
                {
                    var linkName = name;
#if __CORE__
                    if (Runtime.Linux)
                    {
                        linkName += Environment.Is64BitProcess ? ".linux-x64" : ".linux-x86";
                        links.Add(linkName);
                        links.Add(name + ".linux");
                    }
                    else
                    {
                        linkName += Environment.Is64BitProcess ? ".win-x64" : ".win-x86";
                        links.Add(linkName);
                        links.Add(name + ".win");
                    }

                    linkName = name + ".netstandard";
#else
                    if (Environment.Is64BitProcess)
                    {
                        linkName += "64";
                    }
                    var ver = Environment.Version;
                    if (ver.Major >= 4)
                    {
                        linkName += "Fx" + ver.Major + ver.Minor;
                    }
#endif
                    links.Add(linkName);
                    // 有些数据库驱动不区分x86/x64,并且逐步以Fx4为主,所以来一个默认
                    //linkName += ";" + name;
                    if (!links.Contains(name))
                    {
                        links.Add(name);
                    }

#if __CORE__
                    //linkName = "st_" + name;
                    // 指定完全类型名可获取项目中添加了引用的类型,否则dll文件需要放在根目录
                    className = className + "," + name;
#endif
                }

                var type = PluginHelper.LoadPlugin(className, null, assemblyFile, links.Join(","));

                // 反射实现获取数据库工厂
                var file   = assemblyFile;
                var plugin = NewLife.Setting.Current.GetPluginPath();
                file = plugin.CombinePath(file);

                // 如果还没有,就写异常
                if (type == null)
                {
                    if (assemblyFile.IsNullOrEmpty())
                    {
                        return(null);
                    }
                    if (!File.Exists(file))
                    {
                        throw new FileNotFoundException("缺少文件" + file + "!", file);
                    }
                }

                if (type == null)
                {
                    XTrace.WriteLine("驱动文件{0}无效或不适用于当前环境,准备删除后重新下载!", assemblyFile);

                    try
                    {
                        File.Delete(file);
                    }
                    catch (UnauthorizedAccessException) { }
                    catch (Exception ex) { XTrace.Log.Error(ex.ToString()); }

                    type = PluginHelper.LoadPlugin(className, null, file, links.Join(","));

                    // 如果还没有,就写异常
                    if (!File.Exists(file))
                    {
                        throw new FileNotFoundException("缺少文件" + file + "!", file);
                    }
                }
                if (type == null)
                {
                    return(null);
                }

                var asm = type.Assembly;
                if (DAL.Debug)
                {
                    DAL.WriteLog("{2}驱动{0} 版本v{1}", asm.Location, asm.GetName().Version, name ?? className.TrimEnd("Client", "Factory"));
                }

                var field = type.GetFieldEx("Instance");
                if (field == null)
                {
                    return(Activator.CreateInstance(type) as DbProviderFactory);
                }

                return(Reflect.GetValue(null, field) as DbProviderFactory);
            }
            catch
            {
                if (ignoreError)
                {
                    return(null);
                }

                throw;
            }
        }
        static void Main()
        {
            List <Buyer> buyers = new List <Buyer>()
            {
                new Buyer()
                {
                    Name = "Johny", District = "Fantasy District", Age = 22
                },
                new Buyer()
                {
                    Name = "Peter", District = "Scientists District", Age = 40
                },
                new Buyer()
                {
                    Name = "Paul", District = "Fantasy District", Age = 30
                },
                new Buyer()
                {
                    Name = "Maria", District = "Scientists District", Age = 35
                },
                new Buyer()
                {
                    Name = "Joshua", District = "Scientists District", Age = 40
                },
                new Buyer()
                {
                    Name = "Sylvia", District = "Developers District", Age = 22
                },
                new Buyer()
                {
                    Name = "Rebecca", District = "Scientists District", Age = 30
                },
                new Buyer()
                {
                    Name = "Jaime", District = "Developers District", Age = 35
                },
                new Buyer()
                {
                    Name = "Pierce", District = "Fantasy District", Age = 40
                }
            };
            List <Supplier> suppliers = new List <Supplier>()
            {
                new Supplier()
                {
                    Name = "Harrison", District = "Fantasy District", Age = 22
                },
                new Supplier()
                {
                    Name = "Charles", District = "Developers District", Age = 40
                },
                new Supplier()
                {
                    Name = "Hailee", District = "Scientists District", Age = 35
                },
                new Supplier()
                {
                    Name = "Taylor", District = "EarthIsFlat District", Age = 30
                }
            };
            //--------------------------------------------------------------------------------
            // Inner Join
            var innerJoin = suppliers.Join(buyers, s => s.District, b => b.District,
                                           (s, b) => new
            {
                SupplierName = s.Name,
                BuyerName    = b.Name,
                District     = s.District
            });

            foreach (var item in innerJoin)
            {
                Console.WriteLine($"District: {item.District}, Supplier: {item.SupplierName}, Buyer: {item.BuyerName}");
            }
            SeparatingLine();
            //--------------------------------------------------------------------------------
            // Composite Join
            var compositeJoin = suppliers.Join(buyers,
                                               s => new { s.District, s.Age },
                                               b => new { b.District, b.Age },
                                               (s, b) => new
            {
                SupplierName = s.Name,
                BuyerName    = b.Name,
                District     = s.District,
                Age          = s.Age
            });

            foreach (var item in compositeJoin)
            {
                Console.WriteLine($"Supplier : {item.SupplierName}, Buyer : {item.BuyerName}, District: {item.District}, Age : {item.Age}");
            }

            SeparatingLine();
            //--------------------------------------------------------------------------------
            // group Join
            var groupJoin = suppliers.GroupJoin(buyers, s => s.District, b => b.District,
                                                (s, buyersGroup) => new
            {
                s.Name,
                s.District,
                Buyers = buyersGroup
            });

            foreach (var supplier in groupJoin)
            {
                Console.WriteLine($"Supplier: {supplier.Name}, District: {supplier.District}");

                foreach (var buyer in supplier.Buyers)
                {
                    Console.WriteLine($" {buyer.Name}");
                }
            }
            SeparatingLine();
            //--------------------------------------------------------------------------------
            // left outer join

            var leftOuterJoinAnon = suppliers.GroupJoin(buyers, s => s.District, b => b.District,
                                                        (s, buyersGroup) => new
            {
                s.Name,
                s.District,
                Buyers = buyersGroup
            })
                                    .SelectMany(s => s.Buyers.DefaultIfEmpty(),
                                                (s, b) => new
            {
                s.Name,
                s.District,
                BuyersName     = b?.Name ?? "No Name",
                BuyersFistrict = b?.District ?? "No District"
            });

            foreach (var item in leftOuterJoinAnon)
            {
                Console.WriteLine(item.District);
                Console.WriteLine($"{item.Name} - {item.BuyersName}");
            }
            SeparatingLine();
            //--------------------------------------------------------------------------------
            // left outer join shorter

            var leftOuterJoinType = suppliers.GroupJoin(buyers, s => s.District, b => b.District,
                                                        (s, buyersGroup) => new
            {
                s.Name,
                s.District,
                Buyers = buyersGroup.DefaultIfEmpty(new Buyer()
                {
                    Name     = "No Name",
                    District = "No District"
                })
            });

            foreach (var supplier in leftOuterJoinType)
            {
                Console.WriteLine($"{supplier.Name}, {supplier.District}");
                foreach (var buyer in supplier.Buyers)
                {
                    Console.WriteLine($" {buyer.Name}");
                }
            }

            SeparatingLine();
            Console.WriteLine("blOOp!");
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
        /// <summary>
        /// Export excel file for Assets by query conditions.
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        public IActionResult AssetExcel(QryAsset v)
        {
            DataTable dt = new DataTable();
            DataRow   dw;

            dt.Columns.Add("院區");
            //dt.Columns.Add("設備編號");
            dt.Columns.Add("財產編號");
            dt.Columns.Add("合約編號");
            dt.Columns.Add("財產立帳日.驗收日(取得日期)");
            dt.Columns.Add("購入日");
            dt.Columns.Add("設備名稱");
            dt.Columns.Add("部門代號");
            dt.Columns.Add("部門名稱");
            dt.Columns.Add("保管人代號");
            dt.Columns.Add("保管人名稱");
            dt.Columns.Add("存放地點");
            dt.Columns.Add("成本中心");
            dt.Columns.Add("成本中心名稱");
            dt.Columns.Add("英文名稱");
            dt.Columns.Add("廠牌");
            dt.Columns.Add("規格");
            dt.Columns.Add("型號");
            dt.Columns.Add("製造號碼");
            dt.Columns.Add("廠商");
            dt.Columns.Add("廠商(統編)");
            dt.Columns.Add("廠商負責人");
            dt.Columns.Add("E-mail");
            //dt.Columns.Add("閒置等級");
            dt.Columns.Add("財產種類");
            dt.Columns.Add("財產狀況");
            dt.Columns.Add("成本(取得金額)");
            //dt.Columns.Add("專責單位代碼");
            //dt.Columns.Add("專責單位名稱");
            dt.Columns.Add("設備工程師代碼");
            dt.Columns.Add("設備工程師名稱");
            dt.Columns.Add("保養起始月");
            dt.Columns.Add("保養方式");
            dt.Columns.Add("保養金額之最大值");
            dt.Columns.Add("保養週期");
            dt.Columns.Add("WORDPAD保養單");
            dt.Columns.Add("備註");


            List <AssetModel> mv = QryAsset(v);

            mv.Join(_context.AppUsers, a => a.AssetEngId, u => u.Id,
                    (a, u) => new {
                asset = a,
                user  = u
            })
            .GroupJoin(_context.BMEDAssetKeeps,
                       a => a.asset.AssetNo,
                       k => k.AssetNo,
                       (a, k) => new {
                asset     = a.asset,
                user      = a.user,
                assetkeep = k
            })
            .SelectMany(a => a.assetkeep.DefaultIfEmpty(),
                        (a, s) => new {
                asset     = a.asset,
                user      = a.user,
                assetkeep = s
            })
            .GroupJoin(_context.BMEDVendors,
                       a => a.asset.VendorId,
                       vd => vd.VendorId,
                       (a, vd) => new {
                asset     = a.asset,
                user      = a.user,
                assetkeep = a.assetkeep,
                vendor    = vd
            })
            .SelectMany(a => a.vendor.DefaultIfEmpty(),
                        (a, s) => new {
                asset     = a.asset,
                user      = a.user,
                assetkeep = a.assetkeep,
                vendor    = s
            })
            .ToList()
            .ForEach(m =>
            {
                dw     = dt.NewRow();
                dw[0]  = m.asset.Location;
                dw[1]  = m.asset.AssetNo;
                dw[2]  = m.assetkeep == null ? null : m.assetkeep.ContractNo;
                dw[3]  = m.asset.AccDate;
                dw[4]  = m.asset.BuyDate;
                dw[5]  = m.asset.Cname;
                dw[6]  = m.asset.DelivDpt;
                dw[7]  = m.asset.DelivDptName;
                dw[8]  = m.asset.DelivUid;
                dw[9]  = m.asset.DelivEmp;
                dw[10] = m.asset.LeaveSite;
                dw[11] = m.asset.AccDpt;
                dw[12] = m.asset.AccDptName;
                dw[13] = m.asset.Ename;
                dw[14] = m.asset.Brand;
                dw[15] = m.asset.Standard;
                dw[16] = m.asset.Type;
                dw[17] = m.asset.MakeNo;
                dw[18] = m.vendor == null ? (int?)null : m.vendor.VendorId;
                dw[19] = m.vendor == null ? null : m.vendor.Contact;
                dw[20] = m.vendor == null ? null : m.vendor.UniteNo;
                dw[21] = m.vendor == null ? "" : m.vendor.ContactEmail;
                //dw[21] = "";
                dw[22] = m.asset.AssetClass;
                dw[23] = m.asset.DisposeKindC;
                dw[24] = m.asset.Cost == null ? (int?)null : Convert.ToInt32(m.asset.Cost);
                //dw[25] = "";
                //dw[26] = "";
                dw[25] = m.asset.AssetEngId;
                dw[26] = m.asset.AssetEngName;
                dw[27] = m.assetkeep == null ? null : m.assetkeep.KeepYm;
                dw[28] = m.assetkeep == null ? null : m.assetkeep.InOut;
                dw[29] = m.assetkeep == null ? null : m.assetkeep.Cost;
                dw[30] = m.assetkeep == null ? null : m.assetkeep.Cycle;
                dw[31] = m.assetkeep == null ? null : m.assetkeep.FormatId;
                dw[32] = m.asset.Note;
                dt.Rows.Add(dw);
            });
            //
            ExcelPackage excel     = new ExcelPackage();
            var          workSheet = excel.Workbook.Worksheets.Add("設備列表清單");

            workSheet.Cells[1, 1].LoadFromDataTable(dt, true);
            // Generate the Excel, convert it into byte array and send it back to the controller.
            byte[] fileContents;
            fileContents = excel.GetAsByteArray();

            if (fileContents == null || fileContents.Length == 0)
            {
                return(NotFound());
            }

            return(File(
                       fileContents: fileContents,
                       contentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                       fileDownloadName: "設備列表清單.xlsx"
                       ));
        }
Example #46
0
        private void btnInnerJoin_Click(object sender, EventArgs e)
        {
            ResetRTBs();

            var studentsWithCourses = from student in Students
                                      join progCourses in ProgrammeCourses on
                                      student.ProgrammeID equals progCourses.ProgrammeID
                                      select new
            {
                student.FirstName,
                student.Surname,
                student.ProgrammeID,
                programmeCourseID = progCourses.ProgrammeID,
                progCourses.CourseName
            };

            // Note that we've been forced to provide a distinct name for the second instance of ProgrammeID as anonymous types
            // do not allow supporting multiple properties with the same name-->which makes sense if you think about it.
            foreach (var record in studentsWithCourses)
            {
                rtbStudents.AppendText($"{record.FirstName} {record.Surname} ProgramID: {record.ProgrammeID}" +
                                       $"programmeCourseID:  { record.programmeCourseID} " +
                                       $"{record.CourseName} {Environment.NewLine}");
            }

            // Method syntax of the above is:
            var studentsWithCourses2 = Students.Join(ProgrammeCourses,             // students is the outer sequence, ProgrammeCourses is the inner sequence
                                                     (s) => s.ProgrammeID,         // lambda to extract the join key from the outer sequence
                                                     (progC) => progC.ProgrammeID, // lambda to extract the join key from the inner sequence
                                                     (s, progC) => new {
                s.FirstName,                                                       // lambda to create the result set
                s.Surname,
                s.ProgrammeID,
                progCourseID = progC.ProgrammeID,
                progC.CourseName
            });

            foreach (var record in studentsWithCourses2)
            {
                rtbExtraQueries.AppendText(record.FirstName + " " +
                                           record.Surname + " " +
                                           "ProgramID: " + record.ProgrammeID + " " +
                                           "progCourseID: " + record.progCourseID + " " +
                                           record.CourseName + Environment.NewLine);
            }

            // Example left outer join:
            var studentsWithCourses3 = from student in Students
                                       join progCourses in ProgrammeCourses on student.ProgrammeID equals progCourses.ProgrammeID into temp
                                       from progCourses in temp.DefaultIfEmpty() //basically says if student has no identifiable course, set course to default for the type (null as course is an object)
                                       orderby student                           //note we make use of the IComparable interface here
                                       select new
            {
                student.FirstName,
                student.Surname,
                student.ProgrammeID,
                progCourseID = progCourses == null ? -1 : progCourses.ProgrammeID,
                CourseName   = progCourses == null ? "Freewheeling Student!" : progCourses.CourseName
            };

            foreach (var record in studentsWithCourses3)
            {
                rtbNumbers.AppendText(record.Surname + " " +
                                      record.FirstName + " " +
                                      "ProgramID: " + record.progCourseID + " " +
                                      "progCourseID: " + record.progCourseID + " " +
                                      record.CourseName + Environment.NewLine);
            }
        }
Example #47
0
        private string GetBranchesWhichContainsThisCommit(IEnumerable <string> branches, bool showBranchesAsLinks)
        {
            const string remotesPrefix = "remotes/";

            // Include local branches if explicitly requested or when needed to decide whether to show remotes
            bool getLocal = AppSettings.CommitInfoShowContainedInBranchesLocal ||
                            AppSettings.CommitInfoShowContainedInBranchesRemoteIfNoLocal;

            // Include remote branches if requested
            bool getRemote = AppSettings.CommitInfoShowContainedInBranchesRemote ||
                             AppSettings.CommitInfoShowContainedInBranchesRemoteIfNoLocal;
            var  links       = new List <string>();
            bool allowLocal  = AppSettings.CommitInfoShowContainedInBranchesLocal;
            bool allowRemote = getRemote;

            foreach (var branch in branches)
            {
                string noPrefixBranch = branch;
                bool   branchIsLocal;
                if (getLocal && getRemote)
                {
                    // "git branch -a" prefixes remote branches with "remotes/"
                    // It is possible to create a local branch named "remotes/origin/something"
                    // so this check is not 100% reliable.
                    // This shouldn't be a big problem if we're only displaying information.
                    branchIsLocal = !branch.StartsWith(remotesPrefix);
                    if (!branchIsLocal)
                    {
                        noPrefixBranch = branch.Substring(remotesPrefix.Length);
                    }
                }
                else
                {
                    branchIsLocal = !getRemote;
                }

                if ((branchIsLocal && allowLocal) || (!branchIsLocal && allowRemote))
                {
                    string branchText;
                    if (showBranchesAsLinks)
                    {
                        branchText = _linkFactory.CreateBranchLink(noPrefixBranch);
                    }
                    else
                    {
                        branchText = WebUtility.HtmlEncode(noPrefixBranch);
                    }

                    links.Add(branchText);
                }

                if (branchIsLocal && AppSettings.CommitInfoShowContainedInBranchesRemoteIfNoLocal)
                {
                    allowRemote = false;
                }
            }

            if (links.Any())
            {
                return(Environment.NewLine + WebUtility.HtmlEncode(_containedInBranches.Text) + " " + links.Join(", "));
            }

            return(Environment.NewLine + WebUtility.HtmlEncode(_containedInNoBranch.Text));
        }
Example #48
0
        public HttpResponse Execute(HttpRequest request)
        {
            var cookieContainer = InitializeRequestCookies(request);

            var response = ExecuteRequest(request, cookieContainer);

            if (request.AllowAutoRedirect && response.HasHttpRedirect)
            {
                var autoRedirectChain = new List <string>();
                autoRedirectChain.Add(request.Url.ToString());

                do
                {
                    request.Url += new HttpUri(response.Headers.GetSingleValue("Location"));
                    autoRedirectChain.Add(request.Url.ToString());

                    _logger.Trace("Redirected to {0}", request.Url);

                    if (autoRedirectChain.Count > MaxRedirects)
                    {
                        throw new WebException($"Too many automatic redirections were attempted for {autoRedirectChain.Join(" -> ")}", WebExceptionStatus.ProtocolError);
                    }

                    response = ExecuteRequest(request, cookieContainer);
                }while (response.HasHttpRedirect);
            }

            if (response.HasHttpRedirect && !RuntimeInfo.IsProduction)
            {
                _logger.Error("Server requested a redirect to [{0}] while in developer mode. Update the request URL to avoid this redirect.", response.Headers["Location"]);
            }

            if (!request.SuppressHttpError && response.HasHttpError && (request.SuppressHttpErrorStatusCodes == null || !request.SuppressHttpErrorStatusCodes.Contains(response.StatusCode)))
            {
                if (request.LogHttpError)
                {
                    _logger.Warn("HTTP Error - {0}", response);
                }

                if ((int)response.StatusCode == 429)
                {
                    throw new TooManyRequestsException(request, response);
                }
                else
                {
                    throw new HttpException(request, response);
                }
            }

            return(response);
        }
Example #49
0
        delegate int AddDel(int a, int b);//定义一个委托

        public void LambdaTest()
        {
            List <string> list = new List <string>()
            {
                "1", "2", "3", "4"
            };
            List <string> temp  = list.FindAll(s => int.Parse(s) > 1);
            List <int>    list2 = new List <int>()
            {
                1, 2, 3, 4, 5, 6
            };

            list2.FindAll(GetEvenNum);
            MessageBox.Show(temp[1]);

            //lambda实际就是一个匿名函数
            Func <int, int, int> func = (a, b) => a + b;

            func(1, 2);
            AddDel funLambda = delegate(int a, int b) { return(a + b); };//匿名函数

            funLambda(1, 3);

            //标准查询运算(SQO)  SQO缺点:语句太庞大 复杂
            //筛选、投影、聚合、排序等功能
            List <Uesr> userList = new List <Uesr>()
            {
                new Uesr {
                    Id = 1, Name = "张三", Age = 21
                },
                new Uesr {
                    Id = 2, Name = "张三", Age = 22
                },
                new Uesr {
                    Id = 3, Name = "张三", Age = 23
                },
                new Uesr {
                    Id = 4, Name = "张三", Age = 24
                },
                new Uesr {
                    Id = 5, Name = "张三", Age = 25
                },
                new Uesr {
                    Id = 6, Name = "张三", Age = 26
                },
                new Uesr {
                    Id = 7, Name = "张三", Age = 27
                },
                new Uesr {
                    Id = 8, Name = "张三", Age = 28
                }
            };

            //集合筛选
            userList = userList.Where(x => x.Age > 25).OrderBy(x => x.Name).ToList <Uesr>();
            userList.ForEach(r => Update(r.Id));//更新

            //查询单个实体
            userList.FirstOrDefault <Uesr>(s => s.Age > 25);

            //查询投射Select
            userList.Where(x => x.Age > 25).Select(a => a.Name.Contains("b")).ToList();
            userList.Where(x => x.Age > 25).Select(a => new { a.Name, a.Id }).ToList();

            //集合连接Join()
            //新建一个Student集合,并初始化数据
            List <Student> lstStudent = new List <Student>()
            {
                new Student {
                    Id = 1, UserId = 1, ClassName = "电信一班"
                },
                new Student {
                    Id = 2, UserId = 2, ClassName = "电信二班"
                },
                new Student {
                    Id = 3, UserId = 3, ClassName = "电信三班"
                }
            };

            var result = userList.Join(lstStudent, u => u.Id, p => p.UserId, (u, p) => new { UserId = u.Id, Name = u.Name, ClassName = p.ClassName });
        }
Example #50
0
        static void Main(string[] args)
        {
            List <string> list = new List <string> {
                "Jack", "Pet", "Hant", "Party", "Li", "Kkk", "Jerry", "Hugo"
            };

            string str1 = list.First();
            string str2 = list.Last();

            //为每个元素执行某个操作
            list.ForEach(str => Console.WriteLine(str));

            //筛选
            var list1 = list.Where(str => str.StartsWith("J")).ToList <string>();

            //映射
            var list2 = list.Select(str => str + "后缀").ToList <string>();

            //计数
            int count = list.Count(str => str.StartsWith("J"));

            //排序
            var list3 = list.OrderBy(str => str[0]).ToList <string>();

            //排序后再排序
            var list4 = list.OrderBy(str => str[0]).ThenBy(str => str[1]).ToList <string>();


            //分组
            var list6 = list.GroupBy(str => str[0]);

            Console.WriteLine("*************");
            foreach (var group in list6)
            {
                foreach (var str in group)
                {
                    Console.WriteLine(str);
                }
                Console.WriteLine("-------------");
            }
            Console.WriteLine("*************");


            List <string> listA = new List <string> {
                "Jack", "Pet", "Hant"
            };
            List <string> listB = new List <string> {
                "Pet", "Hant", "Party", "Li", "Kkk", "Kkk"
            };
            //并集 不包含重复项
            var list7 = listA.Union(listB).ToList();

            //合并 包含重复项
            var list8 = listA.Concat(listB).ToList();

            //交集 共有的项
            var list9 = listA.Intersect(listB).ToList();

            //差集
            var list10 = listA.Except(listB).ToList();

            List <string> listC = new List <string> {
                "Jack", "Jack", "Pet", "Pet"
            };
            //去重
            var list11 = listC.Distinct().ToList();

            //判断两个集合的元素是否相同
            bool isEqual = listA.SequenceEqual(listB);

            //翻转
            list.Reverse();

            //确定序列中是否存在元素满足条件。
            bool isTrue = list.Any(str => str.StartsWith("O"));



            //联结
            Person magnus = new Person {
                Name = "Hedlund, Magnus"
            };
            Person terry = new Person {
                Name = "Adams, Terry"
            };
            Person charlotte = new Person {
                Name = "Weiss, Charlotte"
            };

            Pet barley = new Pet {
                Name = "Barley", Owner = terry
            };
            Pet boots = new Pet {
                Name = "Boots", Owner = terry
            };
            Pet whiskers = new Pet {
                Name = "Whiskers", Owner = charlotte
            };
            Pet daisy = new Pet {
                Name = "Daisy", Owner = magnus
            };

            List <Person> people = new List <Person> {
                magnus, terry, charlotte
            };
            List <Pet> pets = new List <Pet> {
                barley, boots, whiskers, daisy
            };

            var query =
                people.Join(pets,
                            person => person,
                            pet => pet.Owner,
                            (person, pet) =>
                            new { OwnerName = person.Name, Pet = pet.Name });

            foreach (var obj in query)
            {
                Console.WriteLine(
                    "{0} - {1}",
                    obj.OwnerName,
                    obj.Pet);
            }
        }
Example #51
0
        private static SearchOptions BuildSearchOptions(int page, int size, string keyword)
        {
            var fields      = new List <string>();
            var newkeywords = new List <string>();

            if (keyword.Contains("intitle:"))
            {
                fields.Add("Title");
                newkeywords.Add(keyword.Split(' ', ' ').FirstOrDefault(s => s.Contains("intitle")).Split(':')[1]);
            }

            if (keyword.Contains("content:"))
            {
                fields.Add("Content");
                newkeywords.Add(keyword.Split(' ', ' ').FirstOrDefault(s => s.Contains("content")).Split(':')[1]);
            }

            var searchOptions = fields.Any() ? new SearchOptions(newkeywords.Join(" "), page, size, fields.Join(",")) : new SearchOptions(keyword, page, size, typeof(Post));

            if (keyword.Contains(new[] { " ", ",", "+", ";" }))
            {
                searchOptions.Score = 0.2f;
            }

            return(searchOptions);
        }
Example #52
0
        public void Process(IEnumerable <DocumentTypeMetadata> types)
        {
            var contentTypes        = new List <IContentType>();
            var dataTypeDefinitions = DataTypeService.GetAllDataTypeDefinitions().ToArray();

            foreach (var type in types)
            {
                var ct = ContentTypeService.GetContentType(type.Alias) ?? new ContentType(-1);

                ct.Name          = type.Name;
                ct.Alias         = type.Alias;
                ct.AllowedAsRoot = type.AllowAsRoot;
                ct.Description   = type.Description;
                ct.Icon          = type.Icon;
                ct.Thumbnail     = type.Thumbnail;

                var properties = ct.PropertyTypes.ToArray();

                var newProperties = type.Properties.Where(p => !properties.Any(x => x.Alias == p.Alias));

                foreach (var property in newProperties)
                {
                    var p = new PropertyType(dataTypeDefinitions.First(dtd => dtd.Name == property.DataType))
                    {
                        Name        = property.Name,
                        Alias       = property.Alias,
                        Description = property.Description
                    };

                    if (property.Tab == null)
                    {
                        ct.AddPropertyType(p);
                    }
                    else
                    {
                        ct.AddPropertyType(p, property.Tab.ToString());
                    }
                }

                var modifiedProperties = type.Properties.Join(properties, p => p.Alias, p => p.Alias, (meta, p) => new
                {
                    Metadata     = meta,
                    PropertyType = p
                });

                foreach (var property in modifiedProperties)
                {
                    var p    = property.PropertyType;
                    var meta = property.Metadata;

                    p.Name = meta.Name;
                    p.DataTypeDefinitionId = dataTypeDefinitions.First(dtd => dtd.Name == meta.DataType).Id;
                    p.Description          = meta.Description;

                    //the following hack is brought to you be the letter F
                    var fn = p.GetType().GetProperty("PropertyGroupId", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(p) as System.Lazy <int>;
                    if (fn != null)
                    {
                        var tabId      = fn.Value;
                        var tab        = ct.PropertyGroups.FirstOrDefault(t => t.Id == tabId);
                        var newTabName = meta.Tab.ToString();
                        var newTab     = ct.PropertyGroups.FirstOrDefault(t => t.Name == newTabName);

                        if (tab != null && tab.Name != newTabName)
                        {
                            if (newTab == null)
                            {
                                ct.AddPropertyGroup(newTabName);
                            }

                            ct.MovePropertyType(p.Alias, newTabName);
                        }
                    }
                }

                contentTypes.Add(ct);
            }

            ContentTypeService.Save(contentTypes);

            var preprocessedData = contentTypes
                                   .Join(types, x => x.Alias, x => x.Alias, (ct, m) => new { ct, m })
                                   .ToDictionary(x => x.ct, x => x.m);

            SetupAllowedChildren(preprocessedData);
            SetupTemplates(preprocessedData);

            ContentTypeService.Save(contentTypes);
        }
Example #53
0
        /// <summary>高级查询</summary>
        protected virtual void BuildSearch()
        {
            // 收集索引信息,索引中的所有字段都参与,构造一个高级查询模板
            var idx = Table.Indexes ?? new List <IDataIndex>();
            var cs  = new List <IDataColumn>();

            if (idx != null && idx.Count > 0)
            {
                // 索引中的所有字段,按照表字段顺序
                var dcs = idx.SelectMany(e => e.Columns).Distinct().ToArray();
                foreach (var dc in Table.Columns)
                {
                    // 主键和自增,不参与
                    if (dc.PrimaryKey || dc.Identity)
                    {
                        continue;
                    }

                    if (dc.Name.EqualIgnoreCase(dcs) || dc.ColumnName.EqualIgnoreCase(dcs))
                    {
                        cs.Add(dc);
                    }
                }
            }

            var returnName = GenericType ? "TEntity" : Table.Name;

            WriteLine("#region 高级查询");
            if (cs.Count > 0)
            {
                // 时间字段
                var dcTime = cs.FirstOrDefault(e => e.DataType == typeof(DateTime));
                cs.Remove(dcTime);

                // 可用于关键字模糊搜索的字段
                var keys = Table.Columns.Where(e => e.DataType == typeof(String) && !cs.Contains(e)).ToList();

                // 注释部分
                WriteLine("/// <summary>高级查询</summary>");
                foreach (var dc in cs)
                {
                    WriteLine("/// <param name=\"{0}\">{1}</param>", dc.CamelName(), dc.Description);
                }
                if (dcTime != null)
                {
                    WriteLine("/// <param name=\"start\">{0}开始</param>", dcTime.DisplayName);
                    WriteLine("/// <param name=\"end\">{0}结束</param>", dcTime.DisplayName);
                }
                WriteLine("/// <param name=\"key\">关键字</param>");
                WriteLine("/// <param name=\"page\">分页参数信息。可携带统计和数据权限扩展查询等信息</param>");
                WriteLine("/// <returns>实体列表</returns>");

                // 参数部分
                var pis    = cs.Join(", ", dc => $"{dc.DataType.Name} {dc.CamelName()}");
                var piTime = dcTime == null ? "" : "DateTime start, DateTime end, ";
                WriteLine("public static IList<{0}> Search({1}, {2}String key, PageParameter page)", returnName, pis, piTime);
                WriteLine("{");
                {
                    WriteLine("var exp = new WhereExpression();");

                    // 构造表达式
                    WriteLine();
                    foreach (var dc in cs)
                    {
                        if (dc.DataType.IsInt())
                        {
                            WriteLine("if ({0} >= 0) exp &= _.{1} == {0};", dc.CamelName(), dc.Name);
                        }
                        else if (dc.DataType == typeof(Boolean))
                        {
                            WriteLine("if ({0} != null) exp &= _.{1} == {0};", dc.CamelName(), dc.Name);
                        }
                        else if (dc.DataType == typeof(String))
                        {
                            WriteLine("if (!{0}.IsNullOrEmpty()) exp &= _.{1} == {0};", dc.CamelName(), dc.Name);
                        }
                    }
                    if (dcTime != null)
                    {
                        WriteLine("exp &= _.{0}.Between(start, end);", dcTime.Name);
                    }
                    if (keys.Count > 0)
                    {
                        WriteLine("if (!key.IsNullOrEmpty()) exp &= {0};", keys.Join(" | ", k => $"_.{k.Name}.Contains(key)"));
                    }

                    // 查询返回
                    WriteLine();
                    WriteLine("return FindAll(exp, page);");
                }
                WriteLine("}");
            }

            // 字段缓存,用于魔方前台下拉选择
            {
                // 主键和时间字段
                var pk     = Table.Columns.FirstOrDefault(e => e.Identity);
                var pname  = pk?.Name ?? "Id";
                var dcTime = cs.FirstOrDefault(e => e.DataType == typeof(DateTime));
                var tname  = dcTime?.Name ?? "CreateTime";

                // 遍历索引,第一个字段是字符串类型,则为其生成下拉选择
                var count = 0;
                foreach (var di in idx)
                {
                    if (di.Columns == null || di.Columns.Length == 0)
                    {
                        continue;
                    }

                    // 单字段唯一索引,不需要
                    if (di.Unique && di.Columns.Length == 1)
                    {
                        continue;
                    }

                    var dc = Table.GetColumn(di.Columns[0]);
                    if (dc == null || dc.DataType != typeof(String) || dc.Master)
                    {
                        continue;
                    }

                    var name = dc.Name;

                    WriteLine();
                    WriteLine($"// Select Count({pname}) as {pname},{name} From {Table.Name} Where {tname}>'2020-01-24 00:00:00' Group By {name} Order By {pname} Desc limit 20");
                    WriteLine($"static readonly FieldCache<{returnName}> _{name}Cache = new FieldCache<{returnName}>(_.{name})");
                    WriteLine("{");
                    {
                        WriteLine($"//Where = _.{tname} > DateTime.Today.AddDays(-30) & Expression.Empty");
                    }
                    WriteLine("};");
                    WriteLine();
                    WriteLine($"/// <summary>获取{dc.DisplayName}列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择</summary>");
                    WriteLine("/// <returns></returns>");
                    WriteLine($"public static IDictionary<String, String> Get{name}List() => _{name}Cache.FindAllName();");

                    count++;
                }

                // 如果没有输出,则生成一个注释的模板
                if (count == 0)
                {
                    WriteLine();
                    WriteLine($"// Select Count({pname}) as {pname},Category From {Table.Name} Where {tname}>'2020-01-24 00:00:00' Group By Category Order By {pname} Desc limit 20");
                    WriteLine($"//static readonly FieldCache<{returnName}> _CategoryCache = new FieldCache<{returnName}>(_.Category)");
                    WriteLine("//{");
                    {
                        WriteLine($"//Where = _.{tname} > DateTime.Today.AddDays(-30) & Expression.Empty");
                    }
                    WriteLine("//};");
                    WriteLine();
                    WriteLine("///// <summary>获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择</summary>");
                    WriteLine("///// <returns></returns>");
                    WriteLine("//public static IDictionary<String, String> GetCategoryList() => _CategoryCache.FindAllName();");
                }
            }

            WriteLine("#endregion");
        }
        private static string Write(Expression expression, Type type, string rootParameterName)
        {
            if (expression == null)
            {
                throw new ArgumentNullException("expression");
            }

            if (type == null)
            {
                throw new ArgumentNullException("type");
            }

            switch (expression.NodeType)
            {
            case ExpressionType.Parameter:
                var parameterExpression = expression as ParameterExpression;
                return(parameterExpression.Name);

            case ExpressionType.Constant:
            {
                var value = GetValue(Expression.Convert(expression, type));
                return(ParameterValueWriter.Write(value));
            }

            case ExpressionType.Add:
            case ExpressionType.And:
            case ExpressionType.AndAlso:
            case ExpressionType.Divide:
            case ExpressionType.Equal:
            case ExpressionType.GreaterThan:
            case ExpressionType.GreaterThanOrEqual:
            case ExpressionType.LessThan:
            case ExpressionType.LessThanOrEqual:
            case ExpressionType.Modulo:
            case ExpressionType.Multiply:
            case ExpressionType.NotEqual:
            case ExpressionType.Or:
            case ExpressionType.OrElse:
            case ExpressionType.Subtract:
            {
                var binaryExpression = expression as BinaryExpression;
                var operation        = GetOperation(binaryExpression);

                if (binaryExpression.Left.NodeType == ExpressionType.Call)
                {
                    var compareResult = ResolveCompareToOperation(rootParameterName,
                                                                  (MethodCallExpression)binaryExpression.Left, operation,
                                                                  binaryExpression.Right as ConstantExpression);
                    if (compareResult != null)
                    {
                        return(compareResult);
                    }
                }

                if (binaryExpression.Right.NodeType == ExpressionType.Call)
                {
                    var compareResult = ResolveCompareToOperation(rootParameterName,
                                                                  (MethodCallExpression)binaryExpression.Right, operation,
                                                                  binaryExpression.Left as ConstantExpression);
                    if (compareResult != null)
                    {
                        return(compareResult);
                    }
                }

                var isLeftComposite  = CompositeExpressionTypes.Any(x => x == binaryExpression.Left.NodeType);
                var isRightComposite = CompositeExpressionTypes.Any(x => x == binaryExpression.Right.NodeType);

                var leftType    = GetUnconvertedType(binaryExpression.Left);
                var leftString  = Write(binaryExpression.Left, rootParameterName);
                var rightString = Write(binaryExpression.Right, leftType, rootParameterName);

                return(string.Format(
                           "{0} {1} {2}",
                           string.Format(isLeftComposite ? "({0})" : "{0}", leftString),
                           operation,
                           string.Format(isRightComposite ? "({0})" : "{0}", rightString)));
            }

            case ExpressionType.Negate:
            {
                var unaryExpression = expression as UnaryExpression;

                var operand = unaryExpression.Operand;

                return(string.Format("-{0}", Write(operand, rootParameterName)));
            }

            case ExpressionType.Not:
            {
                var unaryExpression = expression as UnaryExpression;

                var operand = unaryExpression.Operand;

                return(string.Format("not({0})", Write(operand, rootParameterName)));
            }

            case ExpressionType.Convert:
            case ExpressionType.Quote:
            {
                var unaryExpression = expression as UnaryExpression;

                var operand = unaryExpression.Operand;
                return(Write(operand, rootParameterName));
            }

            case ExpressionType.MemberAccess:
            {
                var memberExpression = expression as MemberExpression;

                if (memberExpression.Expression == null)
                {
                    var memberValue = GetValue(memberExpression);
                    return(ParameterValueWriter.Write(memberValue));
                }

                var pathPrefixes = new List <string>();

                var currentMemberExpression = memberExpression;
                while (currentMemberExpression != null)
                {
                    pathPrefixes.Add(currentMemberExpression.Member.Name);
                    if (currentMemberExpression.Expression is ParameterExpression &&
                        ((ParameterExpression)currentMemberExpression.Expression).Name != rootParameterName)
                    {
                        pathPrefixes.Add(((ParameterExpression)currentMemberExpression.Expression).Name);
                    }

                    currentMemberExpression = currentMemberExpression.Expression as MemberExpression;
                }

                pathPrefixes.Reverse();
                var prefix = pathPrefixes.Join("/");

                if (!IsMemberOfParameter(memberExpression))
                {
                    var collapsedExpression = CollapseCapturedOuterVariables(memberExpression);
                    if (!(collapsedExpression is MemberExpression))
                    {
                        return(Write(collapsedExpression, rootParameterName));
                    }

                    memberExpression = (MemberExpression)collapsedExpression;
                }

                var memberCall = GetMemberCall(memberExpression);

                var innerExpression = memberExpression.Expression;

                return(memberCall.IsNullOrWhiteSpace()
                     ? prefix
                     : string.Format("{0}({1})", memberCall, Write(innerExpression, rootParameterName)));
            }

            case ExpressionType.Call:
                var methodCallExpression = expression as MethodCallExpression;
                return(GetMethodCall(methodCallExpression, rootParameterName));

            case ExpressionType.New:
                var newValue = GetValue(expression);
                return(ParameterValueWriter.Write(newValue));

            case ExpressionType.Lambda:
                var lambdaExpression = expression as LambdaExpression;
                var body             = lambdaExpression.Body;
                return(Write(body, rootParameterName));

            default:
                throw new InvalidOperationException("Expression is not recognized or supported");
            }
        }
Example #55
0
        public string GetCode(MetadataTypes metadata, IRequest request, INativeTypesMetadata nativeTypes)
        {
            var typeNamespaces = new HashSet <string>();

            RemoveIgnoredTypes(metadata);
            metadata.Types.Each(x => typeNamespaces.Add(x.Namespace));
            metadata.Operations.Each(x => typeNamespaces.Add(x.Request.Namespace));

            var defaultImports = new List <string>(DefaultImports);

            if (!Config.DefaultImports.IsEmpty())
            {
                defaultImports = Config.DefaultImports;
            }
            else if (ReferencesGson(metadata))
            {
                if (!defaultImports.Contains(GSonAnnotationsNamespace))
                {
                    defaultImports.Add(GSonAnnotationsNamespace);
                }
                if (!defaultImports.Contains(GSonReflectNamespace))
                {
                    defaultImports.Add(GSonReflectNamespace);
                }
            }

            var defaultNamespace = Config.GlobalNamespace ?? DefaultGlobalNamespace;

            Func <string, string> defaultValue = k =>
                                                 request.QueryString[k].IsNullOrEmpty() ? "//" : "";

            var sb = new StringBuilderWrapper(new StringBuilder());

            sb.AppendLine("/* Options:");
            sb.AppendLine("Date: {0}".Fmt(DateTime.Now.ToString("s").Replace("T", " ")));
            sb.AppendLine("Version: {0}".Fmt(metadata.Version));
            sb.AppendLine("BaseUrl: {0}".Fmt(Config.BaseUrl));
            sb.AppendLine();
            sb.AppendLine("{0}Package: {1}".Fmt(defaultValue("Package"), Config.Package));
            sb.AppendLine("{0}GlobalNamespace: {1}".Fmt(defaultValue("GlobalNamespace"), defaultNamespace));
            sb.AppendLine("{0}AddPropertyAccessors: {1}".Fmt(defaultValue("AddPropertyAccessors"), Config.AddPropertyAccessors));
            sb.AppendLine("{0}SettersReturnThis: {1}".Fmt(defaultValue("SettersReturnThis"), Config.SettersReturnThis));
            sb.AppendLine("{0}AddServiceStackTypes: {1}".Fmt(defaultValue("AddServiceStackTypes"), Config.AddServiceStackTypes));
            sb.AppendLine("{0}AddResponseStatus: {1}".Fmt(defaultValue("AddResponseStatus"), Config.AddResponseStatus));
            sb.AppendLine("{0}AddImplicitVersion: {1}".Fmt(defaultValue("AddImplicitVersion"), Config.AddImplicitVersion));
            sb.AppendLine("{0}IncludeTypes: {1}".Fmt(defaultValue("IncludeTypes"), Config.IncludeTypes.Safe().ToArray().Join(",")));
            sb.AppendLine("{0}ExcludeTypes: {1}".Fmt(defaultValue("ExcludeTypes"), Config.ExcludeTypes.Safe().ToArray().Join(",")));
            sb.AppendLine("{0}DefaultImports: {1}".Fmt(defaultValue("DefaultImports"), defaultImports.Join(",")));

            sb.AppendLine("*/");
            sb.AppendLine();

            if (Config.Package != null)
            {
                sb.AppendLine("package {0};".Fmt(Config.Package));
                sb.AppendLine();
            }

            string lastNS = null;

            var existingTypes = new HashSet <string>();

            var requestTypes    = metadata.Operations.Select(x => x.Request).ToHashSet();
            var requestTypesMap = metadata.Operations.ToSafeDictionary(x => x.Request);
            var responseTypes   = metadata.Operations
                                  .Where(x => x.Response != null)
                                  .Select(x => x.Response).ToHashSet();
            var types = metadata.Types.ToHashSet();

            var allTypes = new List <MetadataType>();

            allTypes.AddRange(types);
            allTypes.AddRange(responseTypes);
            allTypes.AddRange(requestTypes);
            allTypes.RemoveAll(x => x.IgnoreType(Config));

            //TypeScript doesn't support reusing same type name with different generic airity
            var conflictPartialNames = allTypes.Map(x => x.Name).Distinct()
                                       .GroupBy(g => g.SplitOnFirst('`')[0])
                                       .Where(g => g.Count() > 1)
                                       .Select(g => g.Key)
                                       .ToList();

            this.conflictTypeNames = allTypes
                                     .Where(x => conflictPartialNames.Any(name => x.Name.StartsWith(name)))
                                     .Map(x => x.Name);

            defaultImports.Each(x => sb.AppendLine("import {0};".Fmt(x)));
            sb.AppendLine();

            sb.AppendLine("public class {0}".Fmt(defaultNamespace.SafeToken()));
            sb.AppendLine("{");

            //ServiceStack core interfaces
            foreach (var type in allTypes)
            {
                var fullTypeName = type.GetFullName();
                if (requestTypes.Contains(type))
                {
                    if (!existingTypes.Contains(fullTypeName))
                    {
                        MetadataType          response = null;
                        MetadataOperationType operation;
                        if (requestTypesMap.TryGetValue(type, out operation))
                        {
                            response = operation.Response;
                        }

                        lastNS = AppendType(ref sb, type, lastNS,
                                            new CreateTypeOptions
                        {
                            ImplementsFn = () =>
                            {
                                if (!Config.AddReturnMarker &&
                                    !type.ReturnVoidMarker &&
                                    type.ReturnMarkerTypeName == null)
                                {
                                    return(null);
                                }

                                if (type.ReturnVoidMarker)
                                {
                                    return("IReturnVoid");
                                }
                                if (type.ReturnMarkerTypeName != null)
                                {
                                    return(Type("IReturn`1", new[] { Type(type.ReturnMarkerTypeName) }));
                                }
                                return(response != null
                                        ? Type("IReturn`1", new[] { Type(response.Name, response.GenericArgs) })
                                        : null);
                            },
                            IsRequest = true,
                        });

                        existingTypes.Add(fullTypeName);
                    }
                }
                else if (responseTypes.Contains(type))
                {
                    if (!existingTypes.Contains(fullTypeName) &&
                        !Config.IgnoreTypesInNamespaces.Contains(type.Namespace))
                    {
                        lastNS = AppendType(ref sb, type, lastNS,
                                            new CreateTypeOptions
                        {
                            IsResponse = true,
                        });

                        existingTypes.Add(fullTypeName);
                    }
                }
                else if (types.Contains(type) && !existingTypes.Contains(fullTypeName))
                {
                    lastNS = AppendType(ref sb, type, lastNS,
                                        new CreateTypeOptions {
                        IsType = true
                    });

                    existingTypes.Add(fullTypeName);
                }
            }

            sb.AppendLine();
            sb.AppendLine("}");

            return(sb.ToString());
        }
Example #56
0
        public static Tuple <string, string, Module> GetNamespaceFilename(ITypeInfo typeInfo, IEmitter emitter)
        {
            var    ns         = typeInfo.GetNamespace(emitter, true);
            var    fileName   = ns ?? typeInfo.GetNamespace(emitter);
            var    module     = typeInfo.Module;
            string moduleName = null;

            if (module != null && module.Type == ModuleType.UMD)
            {
                if (!module.PreventModuleName)
                {
                    moduleName = module.ExportAsNamespace;
                }

                if (!String.IsNullOrEmpty(moduleName))
                {
                    ns = string.IsNullOrWhiteSpace(ns) ? moduleName : (moduleName + "." + ns);
                }
                else
                {
                    module = null;
                }
            }

            switch (emitter.AssemblyInfo.FileNameCasing)
            {
            case FileNameCaseConvert.Lowercase:
                fileName = fileName.ToLower();
                break;

            case FileNameCaseConvert.CamelCase:
                var sepList = new string[] { ".", System.IO.Path.DirectorySeparatorChar.ToString(), "\\", "/" };

                // Populate list only with needed separators, as usually we will never have all four of them
                var neededSepList = new List <string>();

                foreach (var separator in sepList)
                {
                    if (fileName.Contains(separator.ToString()) && !neededSepList.Contains(separator))
                    {
                        neededSepList.Add(separator);
                    }
                }

                // now, separating the filename string only by the used separators, apply lowerCamelCase
                if (neededSepList.Count > 0)
                {
                    foreach (var separator in neededSepList)
                    {
                        var stringList = new List <string>();

                        foreach (var str in fileName.Split(separator[0]))
                        {
                            stringList.Add(str.ToLowerCamelCase());
                        }

                        fileName = stringList.Join(separator);
                    }
                }
                else
                {
                    fileName = fileName.ToLowerCamelCase();
                }
                break;
            }

            return(new Tuple <string, string, Module>(ns, fileName, module));
        }
Example #57
0
        private void CheckErrorTask(App app, Job jb, Int32 count, List <JobTask> list)
        {
            // 每分钟检查一下错误任务和中断任务
            var nextKey = $"_NextAcquireOld_{jb.ID}";
            var now     = TimerX.Now;
            var ext     = Session as IExtend;
            var next    = (DateTime)(ext[nextKey] ?? DateTime.MinValue);

            if (next < now)
            {
                var ps     = ControllerContext.Current.Parameters;
                var server = ps["server"] + "";
                var pid    = ps["pid"].ToInt();
                var ip     = (Session as INetSession).Remote.Host;

                next = now.AddSeconds(60);
                list.AddRange(jb.AcquireOld(server, ip, pid, count));

                if (list.Count > 0)
                {
                    // 既然有数据,待会还来
                    next = now;

                    var n1 = list.Count(e => e.Status == JobStatus.错误 || e.Status == JobStatus.取消);
                    var n2 = list.Count(e => e.Status == JobStatus.就绪 || e.Status == JobStatus.抽取中 || e.Status == JobStatus.处理中);
                    XTrace.WriteLine("作业[{0}/{1}]准备处理[{2}]个错误和[{3}]超时任务 [{4}]", app, jb.Name, n1, n2, list.Join(",", e => e.ID + ""));
                }
                else
                {
                    ext[nextKey] = next;
                }
            }
        }
Example #58
0
        //1) Выбрать имена и фамилии сотрудников, работающих в Украине, но не в Донецке.
        //2) Вывести список стран без повторений.
        //3) Выбрать 3-x первых сотрудников, возраст которых превышает 25 лет.
        //4) Выбрать имена, фамилии и возраст студентов из Киева, возраст которых превышает 23 года
        static void Main(string[] args)
        {
            List <Department> departments = new List <Department>()
            {
                new Department()
                {
                    Id = 1, Country = "Ukraine", City = "Donetsk"
                },
                new Department()
                {
                    Id = 2, Country = "Ukraine", City = "Kyiv"
                },
                new Department()
                {
                    Id = 3, Country = "France", City = "Paris"
                },
                new Department()
                {
                    Id = 4, Country = "Russia", City = "Moscow"
                }
            };
            List <Employee> employees = new List <Employee>()
            {
                new Employee()
                {
                    Id = 1, FirstName = "Tamara", LastName = "Ivanova", Age = 22, DepId = 2
                },
                new Employee()
                {
                    Id = 2, FirstName = "Nikita", LastName = "Larin", Age = 33, DepId = 1
                },
                new Employee()
                {
                    Id = 3, FirstName = "Alica", LastName = "Ivanova", Age = 43, DepId = 3
                },
                new Employee()
                {
                    Id = 4, FirstName = "Lida", LastName = "Marusyk", Age = 22, DepId = 2
                },
                new Employee()
                {
                    Id = 5, FirstName = "Lida", LastName = "Voron", Age = 36, DepId = 4
                },
                new Employee()
                {
                    Id = 6, FirstName = "Ivan", LastName = "Kalyta", Age = 22, DepId = 2
                },
                new Employee()
                {
                    Id = 7, FirstName = "Nikita", LastName = " Krotov ", Age = 27, DepId = 4
                },
                //добавил студента из Киева, возраст которого превышает 23 года
                //т.к. ни один студент не попадал в этот диапазон
                new Employee()
                {
                    Id = 7, FirstName = "Nikita", LastName = " Krotov ", Age = 27, DepId = 2
                }
            };

            //1
            Console.WriteLine("Выбрать имена и фамилии сотрудников, работающих в Украине, но не в Донецке.");
            var result = employees.Join(departments,
                                        em => em.DepId,
                                        dep => dep.Id,
                                        (em, dep) => new {
                employeeFirstName = em.FirstName,
                employeeLastName  = em.LastName,
                depCountry        = dep.Country,
                depCity           = dep.City
            }).Where(p => p.depCountry == "Ukraine" && p.depCity != "Donetsk");

            foreach (var item in result)
            {
                Console.WriteLine($"{item.employeeFirstName} {item.employeeLastName}, {item.depCountry} {item.depCity}");
            }
            Console.WriteLine();

            //2
            Console.WriteLine("Вывести список стран без повторений.");
            var result2 = departments.Select(d => d.Country).Distinct();

            foreach (var item in result2)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine();
            //3
            Console.WriteLine("Выбрать 3-x первых сотрудников, возраст которых превышает 25 лет.");
            var result3 = employees.Where(e => e.Age > 25).Take(3);

            foreach (var item in result3)
            {
                Console.WriteLine($"{item.Id}, {item.FirstName} {item.LastName}, {item.Age}");
            }
            Console.WriteLine();
            //4
            Console.WriteLine("Выбрать имена, фамилии и возраст студентов из Киева, возраст которых превышает 23 года");
            var result4 = employees.Join(departments,
                                         emp => emp.DepId,
                                         dep => dep.Id,
                                         (emp, dep) => new
            {
                fName = emp.FirstName,
                lName = emp.LastName,
                age   = emp.Age,
                city  = dep.City
            }).Where(e => e.city == "Kyiv" && e.age > 23);

            foreach (var item in result4)
            {
                Console.WriteLine($"{item.fName} {item.lName} - {item.age}, {item.city}");
            }
            Console.WriteLine();
        }
Example #59
0
File: DbBase.cs Project: vv7a/X
        /// <summary>获取提供者工厂</summary>
        /// <param name="assemblyFile"></param>
        /// <param name="className"></param>
        /// <param name="strict"></param>
        /// <param name="ignoreError"></param>
        /// <returns></returns>
        public static DbProviderFactory GetProviderFactory(String assemblyFile, String className, Boolean strict = false, Boolean ignoreError = false)
        {
            try
            {
                var links = new List <String>();
                var name  = Path.GetFileNameWithoutExtension(assemblyFile);
                if (!name.IsNullOrEmpty())
                {
                    var linkName = name;
#if __CORE__
                    var arch = (RuntimeInformation.OSArchitecture + "").ToLower();
                    // 可能是在x64架构上跑x86
                    if (arch == "x64" && !Environment.Is64BitProcess)
                    {
                        arch = "x86";
                    }

                    var platform = "";
                    if (Runtime.Linux)
                    {
                        platform = "linux";
                    }
                    else if (Runtime.OSX)
                    {
                        platform = "osx";
                    }
                    else
                    {
                        platform = "win";
                    }

                    links.Add($"{name}.{platform}-{arch}");
                    links.Add($"{name}.{platform}");
#else
                    if (Environment.Is64BitProcess)
                    {
                        linkName += "64";
                    }
                    var ver = Environment.Version;
                    if (ver.Major >= 4)
                    {
                        linkName += "Fx" + ver.Major + ver.Minor;
                    }
                    links.Add(linkName);
#endif
                    // 有些数据库驱动不区分x86/x64,并且逐步以Fx4为主,所以来一个默认
                    if (!strict && !links.Contains(name))
                    {
                        links.Add(name);
                    }
                }

                var type = PluginHelper.LoadPlugin(className, null, assemblyFile, links.Join(","));

                // 反射实现获取数据库工厂
                var file   = assemblyFile;
                var plugin = NewLife.Setting.Current.GetPluginPath();
                file = plugin.CombinePath(file);

                // 如果还没有,就写异常
                if (type == null)
                {
                    if (assemblyFile.IsNullOrEmpty())
                    {
                        return(null);
                    }
                    if (!File.Exists(file))
                    {
                        throw new FileNotFoundException("缺少文件" + file + "!", file);
                    }
                }

                if (type == null)
                {
                    XTrace.WriteLine("驱动文件{0}无效或不适用于当前环境,准备删除后重新下载!", assemblyFile);

                    try
                    {
                        File.Delete(file);
                    }
                    catch (UnauthorizedAccessException) { }
                    catch (Exception ex) { XTrace.Log.Error(ex.ToString()); }

                    type = PluginHelper.LoadPlugin(className, null, file, links.Join(","));

                    // 如果还没有,就写异常
                    if (!File.Exists(file))
                    {
                        throw new FileNotFoundException("缺少文件" + file + "!", file);
                    }
                }
                //if (type == null) return null;
                if (type == null)
                {
                    throw new XCodeException("无法加载驱动[{0}],请从nuget正确引入数据库驱动!", assemblyFile);
                }

                var asm = type.Assembly;
                if (DAL.Debug)
                {
                    DAL.WriteLog("{2}驱动{0} 版本v{1}", asm.Location, asm.GetName().Version, name ?? className.TrimEnd("Client", "Factory"));
                }

                var field = type.GetFieldEx("Instance");
                if (field == null)
                {
                    return(Activator.CreateInstance(type) as DbProviderFactory);
                }

                return(Reflect.GetValue(null, field) as DbProviderFactory);
            }
            catch
            {
                if (ignoreError)
                {
                    return(null);
                }

                throw;
            }
        }
Example #60
0
    private void Start()
    {
        _moduleId            = _moduleIdCounter++;
        Sel.OnInteract      += SelPress;
        Sel.OnInteractEnded += SelRelease;

        var SerialNumber = BombInfo.GetSerialNumber();
        int movementIx   = 0;

        if (SerialNumber.Contains('0'))
        {
            for (int i = 0; i < 6; i++)
            {
                if (SerialNumber[i] - '0' >= 0 && SerialNumber[i] - '0' <= 9)
                {
                    movementIx += SerialNumber[i] - '0';
                }
            }
        }
        else
        {
            movementIx = SerialNumber[5] - '0';
        }
        movementIx = movementIx % 10;
        Debug.LogFormat("[Tap Code #{0}] Movement index: {1}", _moduleId, movementIx);

        var wordIx = Rnd.Range(0, 100);

        _chosenWord = _wordList[wordIx];

        X = wordIx % 10;
        Y = wordIx / 10;

        if (SerialNumber[0] >= '0' && SerialNumber[0] <= '9')
        {
            if (SerialNumber[1] >= '0' && SerialNumber[1] <= '9')
            {
                Debug.LogFormat("[Tap Code #{0}] Serial Number's first two characters are NUMBER NUMBER. Moving down.", _moduleId);
                Y = (Y + movementIx) % 10;
            }
            else
            {
                Debug.LogFormat("[Tap Code #{0}] Serial Number's first two characters are NUMBER LETTER. Moving right.", _moduleId);
                X = (X + movementIx) % 10;
            }
        }
        else
        {
            if (SerialNumber[1] >= '0' && SerialNumber[1] <= '9')
            {
                Debug.LogFormat("[Tap Code #{0}] Serial Number's first two characters are LETTER NUMBER. Moving left.", _moduleId);
                X = (X + (10 - movementIx)) % 10;
            }
            else
            {
                Debug.LogFormat("[Tap Code #{0}] Serial Number's first two characters are LETTER LETTER. Moving up.", _moduleId);
                Y = (Y + (10 - movementIx)) % 10;
            }
        }
        _solutionWord = _wordList[Y * 10 + X];

        var chosenConverted   = _convertedWordList[Array.IndexOf(_wordList, _chosenWord)].ToUpperInvariant();
        var solutionConverted = _convertedWordList[Array.IndexOf(_wordList, _solutionWord)].ToUpperInvariant();

        for (int i = 0; i < 5; i++)
        {
            int tapY;
            int tapX;
            int chosenVal = chosenConverted[i] - 'A';
            if (chosenVal > 9)
            {
                chosenVal--;
            }
            int solutionVal = solutionConverted[i] - 'A';
            if (solutionVal > 9)
            {
                solutionVal--;
            }
            tapY = chosenVal / 5 + 1;
            tapX = chosenVal % 5 + 1;
            _chosenTapCode.Add(tapY);
            _chosenTapCode.Add(tapX);
            tapY = solutionVal / 5 + 1;
            tapX = solutionVal % 5 + 1;
            _solutionTapCode.Add(tapY);
            _solutionTapCode.Add(tapX);
        }
        var chosenChunks = new List <string>();

        for (var i = 0; i < _chosenTapCode.Count; i += 2)
        {
            chosenChunks.Add(_chosenTapCode.Skip(i).Take(2).Join(""));
        }
        var solutionChunks = new List <string>();

        for (var i = 0; i < _solutionTapCode.Count; i += 2)
        {
            solutionChunks.Add(_solutionTapCode.Skip(i).Take(2).Join(""));
        }

        Debug.LogFormat("[Tap Code #{0}] Chosen word: {1}", _moduleId, _chosenWord.ToUpperInvariant());
        Debug.LogFormat("[Tap Code #{0}] Solution word: {1}", _moduleId, _solutionWord.ToUpperInvariant());
        Debug.LogFormat("[Tap Code #{0}] Chosen word to Tap Code: {1}", _moduleId, chosenChunks.Join(" "), _chosenTapCode.Skip(2 * (_chosenTapCode.Count / 2)).Join(""));
        Debug.LogFormat("[Tap Code #{0}] Solution word to Tap Code: {1}", _moduleId, solutionChunks.Join(" "), _solutionTapCode.Skip(2 * (_solutionTapCode.Count / 2)).Join(""));
    }