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); }
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; }
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); } }
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; } }
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; } }
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); }
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(); }
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(); }
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); } }
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();//数据绑定 }
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; }
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; }
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(";")); }
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("/"); }
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)); } }
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("&"); }
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("; ")); } }
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; }
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(", ")); }
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; }
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); }
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 }; }
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(); } }
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); }
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(", ")});"); }
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 }); }
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); }
/// <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); }
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(); }
/// <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" )); }
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); } }
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)); }
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); }
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 }); }
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); } }
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); }
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); }
/// <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"); } }
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()); }
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)); }
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; } } }
//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(); }
/// <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; } }
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("")); }