private void filterButton_Click(object sender, EventArgs e) // вызывается когда нажали кнопку фильтрации { Tuple <object, string>[] values = new Tuple <object, string>[] { new Tuple <object, string>(nameField, dbFields[1]), new Tuple <object, string>(visitorsAmountField, dbFields[2]), new Tuple <object, string>(costPerVisitorField, dbFields[3]), new Tuple <object, string>(equipmentEntertainmentCostsField, dbFields[4]), new Tuple <object, string>(rentPriceField, dbFields[5]) }; Tuple <object, string>[] dates = new Tuple <object, string>[] { new Tuple <object, string>(startDateTimePicker, dbFields[6]), new Tuple <object, string>(endDateTimePicker, dbFields[7]) }; var filterFields = values.Where(v => (v.Item1 as TextBox)?.Text.Length != 0) .Concat(dates.Where(v => (v.Item1 as DateTimePicker)?.Text.Length != 1)); if (!isFormValid(values.Concat(dates).Except(filterFields).Select(v => v.Item1).ToArray())) { return; } var filteredResultFields = filterFields .Select(v => $"[{v.Item2}]{filterTypeComboBox.SelectedItem}{(v.Item1 as TextBox)?.Text ?? (v.Item1 as DateTimePicker).Value.ToOADate().ToString()}"); filterCommand = "WHERE " + string.Join($" AND ", filteredResultFields); Update(sortFieldComboBox.Text, isFiltered: true); }
public void EmitLogin(Action <LoginResponse> callback, string agent = "Inumedia.SlackAPI") { var parameterArray = new Tuple <string, string>[] { new Tuple <string, string>("agent", agent) }; if (APILoginParameters != null && APILoginParameters.Length > 0) { parameterArray = parameterArray.Concat(APILoginParameters).ToArray(); } APIRequestWithToken(callback, parameterArray); }
// {{ Target = }} public static void Add() { // X:\jsc.svn\examples\java\hybrid\Test\TestJVMCLRTupleArrayLast\TestJVMCLRTupleArrayLast\Program.cs Target = Target.ToArray(); Target = Target.Concat( new[] { Tuple.Create(default(MemberInfo), 0) } ).ToArray(); }
public void APIRequestWithToken <K>(Action <K> callback, params Tuple <string, string>[] getParameters) where K : Response { Tuple <string, string>[] tokenArray = new Tuple <string, string>[] { new Tuple <string, string>("token", APIToken) }; if (getParameters != null && getParameters.Length > 0) { tokenArray = tokenArray.Concat(getParameters).ToArray(); } APIRequest(callback, tokenArray, new Tuple <string, string> [0]); }
public Task <K> APIRequestWithTokenAsync <K>(params Tuple <string, string>[] getParameters) where K : Response { Tuple <string, string>[] tokenArray = new Tuple <string, string>[] { new Tuple <string, string>("token", APIToken) }; if (getParameters != null && getParameters.Length > 0) { tokenArray = tokenArray.Concat(getParameters).ToArray(); } return(APIRequestAsync <K>(tokenArray, new Tuple <string, string> [0])); }
public void ThrowArgumentExceptionIfAliasIsRepeated() { var hydratedAliaser = new Aliaser(); var emptyAliaser = new Aliaser(); var uniqueList = new Tuple <string, string>[] { Tuple.Create("Item1", "Alias1"), Tuple.Create("Item2", "Alias2"), Tuple.Create("Item3", "Alias3"), }; hydratedAliaser.AddAlias(uniqueList); var repeatList = new Tuple <string, string>[] { Tuple.Create("Item4", "Alias1"), }; Assert.Throws <ArgumentException>(() => hydratedAliaser.AddAlias(repeatList)); Assert.Throws <ArgumentException>(() => emptyAliaser.AddAlias(uniqueList.Concat(repeatList))); }
/// <summary> /// enumerate the subtree with the root <paramref name="partialroot"/>, provided with certain information (of type <typeparamref name="TLevel"/>) of the node /// 遍历以<paramref name="partialroot"/>为根的子树,并且在过程中提供结点有关信息(<typeparamref name="TLevel"/>类型的) /// </summary> /// <typeparam name="TLevel">提供的每层结点额外信息的类型</typeparam> /// <param name="partialroot">需要遍历的子树的根</param> /// <param name="seed">附加参数的初始值</param> /// <param name="leftlevelfunc">遍历到某一层结点时将附加参数传给下一层左孩子时需要进行的操作</param> /// <param name="rightlevelfunc">遍历到某一层结点时将附加参数传给下一层右孩子时需要进行的操作</param> /// <param name="order">二叉树遍历方式</param> /// <return>遍历得到的结点与附加参数的集合</return> public static IEnumerable <Tuple <IBinaryTreeNode, TLevel> > TraverseSubtree <TLevel>( this IBinaryTreeNode partialroot, TLevel seed, Func <TLevel, IBinaryTreeNode, TLevel> leftlevelfunc, Func <TLevel, IBinaryTreeNode, TLevel> rightlevelfunc, TraverseOrder order = TraverseOrder.InOrder) { Contract.Requires <ArgumentNullException>(partialroot != null); Contract.Ensures(Contract.Result <IEnumerable <Tuple <IBinaryTreeNode, TLevel> > >() != null); var current = new Tuple <IBinaryTreeNode, TLevel>[] { new Tuple <IBinaryTreeNode, TLevel>(partialroot, seed) }; var leftlevel = leftlevelfunc == null ? seed : leftlevelfunc(seed, partialroot); var rightlevel = rightlevelfunc == null ? seed : rightlevelfunc(seed, partialroot); switch (order) { case TraverseOrder.InOrder: return(partialroot.LeftChild.TraverseSubtree(leftlevel, leftlevelfunc, rightlevelfunc, order) .Concat(current) .Concat(partialroot.RightChild.TraverseSubtree(rightlevel, leftlevelfunc, rightlevelfunc, order))); case TraverseOrder.PreOrder: return(current .Concat(partialroot.LeftChild.TraverseSubtree(leftlevel, leftlevelfunc, rightlevelfunc, order)) .Concat(partialroot.RightChild.TraverseSubtree(rightlevel, leftlevelfunc, rightlevelfunc, order))); case TraverseOrder.PostOrder: return(partialroot.LeftChild.TraverseSubtree(leftlevel, leftlevelfunc, rightlevelfunc, order) .Concat(partialroot.RightChild.TraverseSubtree(rightlevel, leftlevelfunc, rightlevelfunc, order)) .Concat(current)); case TraverseOrder.LevelOrder: return(LevelOrderTraverse(partialroot, seed, leftlevelfunc, rightlevelfunc)); default: return(null); } }
/// <summary> /// enumerate the subtree with the root <paramref name="partialroot"/>, provided with certain information (of type <typeparamref name="TLevel"/>) of the node /// 遍历以<paramref name="partialroot"/>为根的子树,并且在过程中提供结点有关信息(<typeparamref name="TLevel"/>类型的) /// </summary> /// <typeparam name="TLevel">提供的每层结点额外信息的类型</typeparam> /// <param name="partialroot">需要遍历的子树的根</param> /// <param name="seed">附加参数的初始值</param> /// <param name="levelfunc">遍历到某一层结点时将附加参数传给下一层孩子时需要进行的操作。第一个参数是该层的附加参数, /// 第二个参数是遍历到的结点,第三个是遍历到的结点在上层结点孩子结点中的编号</param> /// <param name="order">多叉树遍历方式</param> /// <returns>遍历得到的结点与附加参数的集合</returns> public static IEnumerable <Tuple <IMultiwayTreeNode, TLevel> > TraverseSubtree <TLevel>( this IMultiwayTreeNode partialroot, TLevel seed, Func <TLevel, IMultiwayTreeNode, int, TLevel> levelfunc, TraverseOrder order = TraverseOrder.LevelOrder) { Contract.Requires <ArgumentNullException>(partialroot != null); Contract.Requires <NotSupportedException>(order != TraverseOrder.InOrder, "多叉树不支持中序遍历"); Contract.Ensures(Contract.Result <IEnumerable <Tuple <IMultiwayTreeNode, TLevel> > >() != null); var current = new Tuple <IMultiwayTreeNode, TLevel>[] { new Tuple <IMultiwayTreeNode, TLevel>(partialroot, seed) }; switch (order) { case TraverseOrder.PreOrder: return(current.Concat(partialroot.Children? .SelectMany((node, index) => node?.TraverseSubtree( levelfunc == null ? seed : levelfunc(seed, partialroot, index), levelfunc, order) ?? Enumerable.Empty <Tuple <IMultiwayTreeNode, TLevel> >()) ?? Enumerable.Empty <Tuple <IMultiwayTreeNode, TLevel> >())); case TraverseOrder.PostOrder: return((partialroot.Children? .SelectMany((node, index) => node?.TraverseSubtree( levelfunc == null ? seed : levelfunc(seed, partialroot, index), levelfunc, order) ?? Enumerable.Empty <Tuple <IMultiwayTreeNode, TLevel> >()) ?? Enumerable.Empty <Tuple <IMultiwayTreeNode, TLevel> >()) .Reverse().Concat(current)); case TraverseOrder.LevelOrder: return(LevelOrderTraverse(partialroot, seed, levelfunc)); default: return(null); } }
private void ImportPrivateKeys(ImportOptions o) { if (o.ExtKey == null || o.Destination == null) { throw new FormatException(); } var destination = BitcoinAddress.Create(o.Destination, RPCClient.Network); BitcoinExtKey root = null; try { root = new BitcoinExtKey(o.ExtKey, RPCClient.Network); } catch (FormatException ex) { try { root = new BitcoinExtKey(new Mnemonic(o.ExtKey).DeriveExtKey(o.Passphrase), RPCClient.Network); } catch (FormatException) { Console.WriteLine("Invalid ExtKey or mnemonic"); throw new FormatException(); } } int bip44Account = 0; var strategies = new[] { new { Description = "BIP45/P2SH/1-1", Strategy = (IStrategy) new BIP45P2SH11Strategy(root, false), ChangeStrategy = (IStrategy) new BIP45P2SH11Strategy(root, true), }, new { Description = $"BIP44 (Account {bip44Account})", Strategy = (IStrategy) new BIP44P2PKHStrategy(root, bip44Account, false), ChangeStrategy = (IStrategy) new BIP44P2PKHStrategy(root, bip44Account, true), }, new { Description = "Direct", Strategy = (IStrategy) new DirectDerivationStrategy(root, false), ChangeStrategy = (IStrategy) new DirectDerivationStrategy(root, true), }, new { Description = "Bitcoin Core", Strategy = (IStrategy) new BitcoinCoreDerivationStrategy(root, false), ChangeStrategy = (IStrategy) new BitcoinCoreDerivationStrategy(root, true), } }; IEnumerable <Tuple <Key, Coin> > all = new Tuple <Key, Coin> [0]; foreach (var strategy in strategies) { Logs.Main.LogInformation("Scanning with strategy \"" + strategy.Description + "\""); var found = Scan(strategy.Strategy); Logs.Main.LogInformation($"Found {found.Count} coins"); all = all.Concat(found); if (strategy.ChangeStrategy != null) { Logs.Main.LogInformation($"Scanning change addresses"); found = Scan(strategy.ChangeStrategy); Logs.Main.LogInformation($"Found {found.Count} coins"); all = all.Concat(found); } } DumpCoins(destination, all.Select(a => a.Item2), all.Select(a => a.Item1)); }