Inheritance: ScoringRules
Example #1
0
 public RunningBack(string name, int jerseyNumber, Grouping group, int age, float weight, double rating, int rushingAttempts, int rushingYards, int rushingTouchdowns)
     : base(name, jerseyNumber, group, age, weight, rating)
 {
     this.RushingAttempts = rushingAttempts;
     this.RushingYards = rushingYards;
     this.RushingTouchdowns = rushingTouchdowns;
 }
Example #2
0
        public IAcceptGroups Add(Grouping grouping, object group, int indent)
        {
            if (group is Host || group is VM)
                XenObjects.Add((IXenObject)group);

            return this;
        }
Example #3
0
 public WideReceiver(string name, int jerseyNumber, Grouping group, int age, float weight, double rating, int receptions, int receivingYards, int receivingTouchdowns)
     : base(name, jerseyNumber, group, age, weight, rating)
 {
     this.Receptions = receptions;
     this.ReceivingYards = receivingYards;
     this.ReceivingTouchdowns = receivingTouchdowns;
 }
Example #4
0
        public TasksGrid()
        {
            this.Title = "All Lists";
            this.IconCls = "icon-folder";
            this.EnableColumnHide = false;
            this.EnableColumnMove = false;

            this.SelectionModel.Add(new RowSelectionModel {
            });

            this.View.Add(new GridView
            {
                MarkDirty = false,
                EmptyText = "There are no tasks to show in this category.",
                GetRowClass = { Fn = TasksGrid.SCOPE + ".getRowClass" },
                LoadMask = true,
                LoadingText = "Loading Tasks...",

                Plugins =
                {
                    new GridDragDrop{ DDGroup = "tasktree" }
                }
            });

            Grouping g = new Grouping();

            this.Features.Add(g);

            this.BuildStore();
            this.BuildColumnModel();
            this.BuildHeaderRow();
            this.BuildContextMenu();
            this.InitLogic();
        }
 internal SKSAuthorizationDialog(int key_handle,
                                 PassphraseFormat format,
                                 Grouping grouping,
                                 AppUsage app_usage,
                                 int zero_or_retriesleft)
 {
 	this.key_handle = key_handle;
     this.retry_warning = zero_or_retriesleft != 0;
     this.retriesleft = zero_or_retriesleft;
     this.pin_format = format;
     if (app_usage == AppUsage.SIGNATURE &&
         (grouping == Grouping.UNIQUE || grouping == Grouping.SIGNATURE_PLUS_STANDARD))
     {
     	show_picture = true;
     	add_on_dialog_header = " - SIGNATURE";
     	picture_resource = "sks.signsymb.gif";
     	picture_tooltip_text = "Signature operation requiring a specific PIN"; 
     } 
     if (app_usage == AppUsage.AUTHENTICATION && grouping == Grouping.UNIQUE)
     {
     	show_picture = true;
     	add_on_dialog_header = " - AUTHENTICATION";
     	picture_resource = "sks.idcard.gif";
     	picture_tooltip_text = "Authentication operation requiring a specific PIN"; 
     } 
     if (app_usage == AppUsage.ENCRYPTION && grouping == Grouping.UNIQUE)
     {
     	show_picture = true;
     	add_on_dialog_header = " - ENCRYPTION";
     	picture_resource = "sks.encrypt.gif";
     	picture_tooltip_text = "Encryption operation requiring a specific PIN"; 
     } 
     pin_format = format;
     InitializeComponent();
 }
 public void ProcessGrouping(Grouping group)
 {
     if (ProcessGroupingObject != null)
         ProcessGroupingObject(group);
     foreach (var obj in group.Children)
         obj.AcceptVisitor(this);
 }
		Expression _Label;	// (string) The label displayed on the legend.		
	
		public DynamicSeries(ReportDefn r, ReportLink p, XmlNode xNode) : base(r, p)
		{
			_Grouping=null;
			_Sorting=null;
			_Label=null;

			// Loop thru all the child nodes
			foreach(XmlNode xNodeLoop in xNode.ChildNodes)
			{
				if (xNodeLoop.NodeType != XmlNodeType.Element)
					continue;
				switch (xNodeLoop.Name)
				{
					case "Grouping":
						_Grouping = new Grouping(r, this, xNodeLoop);
						break;
					case "Sorting":
						_Sorting = new Sorting(r, this, xNodeLoop);
						break;
					case "Label":
						_Label = new Expression(r, this, xNodeLoop, ExpressionType.String);
						break;
					default:
						break;
				}
			}
			if (_Grouping == null)
				OwnerReport.rl.LogError(8, "DynamicSeries requires the Grouping element.");
			if (_Label == null)
				OwnerReport.rl.LogError(8, "DynamicSeries requires the Label element.");
		}
		List<GroupEntry> _NestedGroup;	// group one hierarchy below
	
		public GroupEntry(Grouping g, Sorting s, int start)
		{
			_Group = g;
			_Sort = s;
			_StartRow = start;
			_EndRow = -1;
            _NestedGroup = new List<GroupEntry>();

			// Check to see if grouping and sorting are the same
			if (g == null || s == null)
				return;			// nothing to check if either is null

			if (s.Items.Count != g.GroupExpressions.Items.Count)
				return;

			for (int i = 0; i < s.Items.Count; i++)
			{
				SortBy sb = s.Items[i] as SortBy;

				if (sb.Direction == SortDirectionEnum.Descending)
					return;			// TODO we could optimize this 
				
				FunctionField ff = sb.SortExpression.Expr as FunctionField;
				if (ff == null || ff.GetTypeCode() != TypeCode.String)
					return;

				GroupExpression ge = g.GroupExpressions.Items[i] as GroupExpression;
				FunctionField ff2 = ge.Expression.Expr as FunctionField;
				if (ff2 == null || ff.Fld != ff2.Fld)
					return;
			}
			_Sort = null;		// we won't need to sort since the groupby will handle it correctly
		}
		void ServiceDiscovered (object sender, ServiceDiscoveredEventArgs e)
		{
			var grouping = new Grouping<IService, ICharacteristic>(e.Service);
			DiscoveredServices.Add(grouping);

			e.Service.CharacteristicDiscovered += (s, evt) => CharacteristicDiscovered(s, evt, grouping);
			e.Service.DiscoverCharacteristics();
		}
Example #10
0
 public Player(string name, int jerseyNumber, Grouping group, int age, float weight, double rating)
 {
     this.Name = name;
     this.JerseyNumber = jerseyNumber;
     this.Group = group;
     this.Age = age;
     this.Weight = weight;
     this.Rating = rating;
 }
Example #11
0
        /// <param name="parent">May be null.</param>
        internal GroupingTag(Grouping grouping, object parent, object group)
        {
            System.Diagnostics.Trace.Assert(grouping != null);
            System.Diagnostics.Trace.Assert(group != null);

            Grouping = grouping;
            Parent = parent;
            Group = group;
        }
 public bool CanHaveSameSequence(Grouping other)
 {
     return GroupId == other.GroupId &&
            IndicatorId == other.IndicatorId &&
            AgeId == other.AgeId &&
            SexId == other.SexId &&
            AreaTypeId == other.AreaTypeId &&
            YearRange == other.YearRange;
 }
Example #13
0
 protected static Group GetGroupFor(Grouping grouping, Search search, Grouping subgrouping)
 {
     if (grouping is FolderGrouping)
         return new FolderGroup(search, grouping);
     else if (subgrouping == null)
         return new LeafGroup(search);
     else
         return new NodeGroup(search, subgrouping);
 }
Example #14
0
 public Quarterback(string name, int jerseyNumber, Grouping group, int age, float weight, double rating, int attemptedPasses, int completedPasses, int touchdowns, int interceptions, int passingYards)
     : base(name, jerseyNumber, group, age, weight, rating)
 {
     this.AttemptedPasses = attemptedPasses;
     this.CompletedPasses = completedPasses;
     this.TouchdownPasses = touchdowns;
     this.Interceptions = interceptions;
     this.PassingYards = passingYards;
     GetPassingPercentage(completedPasses, attemptedPasses);
     GetPassingRate(completedPasses, attemptedPasses, touchdowns, passingYards, interceptions);
 }
        public virtual IAcceptGroups Add(Grouping grouping, Object group, int indent)
        {
            if (group == null)
                return null;

            bool? expandNode = ShouldExpandNode(group);
            VirtualTreeNode node = AddNode(index, grouping, group);
            index++;

            return newAcceptor(node, expandNode);
        }
 /// <summary>
 /// This eventhandler handles the OnServerValidate event fired from the "DupeValidator" object.
 /// It checks the text input into the txtName control and determines if a group by that name already exists
 /// </summary>
 /// <param name="source">The object that fired this event</param>
 /// <param name="args">ServerValidateEventArgs passed to the eventhandler</param>
 protected void CheckForDuplicateGroupName(object source, ServerValidateEventArgs args)
 {
     if (string.IsNullOrWhiteSpace(txtName.Text))
     {
         args.IsValid = true;
     }
     else
     {
         var grouping = new Grouping(_environmentParametersViewModel);
         args.IsValid = !grouping.GetDuplicateExists(txtName.Text);
     }
 }
Example #17
0
        public IAcceptGroups Add(Grouping grouping, Object group, int indent)
        {
            if (group == null)
                return null;

            VirtualTreeNode node = new VirtualTreeNode(group.ToString());
            node.Tag = group;
            parent.Nodes.Insert(index, node);
            index++;

            return new TreeNodeGroupAcceptor(node, null);
        }
		public TrackNodeCurve (CubicBezier cubicBezier, TrackSegmentModify segmentModify,Grouping grouping)
		{
			this.Group = grouping;
			this.cubicBezier = cubicBezier;
			this.SegmentModify = segmentModify;


			P0 = AddTrackCurveNode ( SegmentModify.TrackSegment.transform.TransformPoint (cubicBezier.p0),TrackNode.NodeType.PO );
			P1 = AddTrackCurveNode (SegmentModify.TrackSegment.transform.TransformPoint (cubicBezier.p1), TrackNode.NodeType.P1);
			P2 = AddTrackCurveNode (SegmentModify.TrackSegment.transform.TransformPoint (cubicBezier.p2),TrackNode.NodeType.P2);
			P3 = AddTrackCurveNode (SegmentModify.TrackSegment.transform.TransformPoint (cubicBezier.p3),TrackNode.NodeType.P3);
			if ((grouping == Grouping.End || grouping == Grouping.Both) && SegmentModify.GetNextSegment(true) == null) {
				ExtrudeNode = AddExtrudeNode (SegmentModify.TrackSegment.transform.TransformPoint (cubicBezier.p3) + SegmentModify.TrackSegment.getTangentPoint(1f)*.3f);
			}
		}
        protected void Save(object sender, EventArgs e)
        {
            if (!Page.IsValid) return;

            _groupViewModel = GetGroupViewModel();
            var groupViewModel = new GroupViewModel
            {
                DisplayName = txtName.Text,
                Description = txtDescription.Text,
                VisibilityType = _groupViewModel.VisibilityType
            };

            var grouping = new Grouping(_environmentParametersViewModel);
            Guid roleId = grouping.CopyGroup(groupViewModel, SessionObject.LoggedInUser.School, RoleId, _rolePortalId);
            string script = string.Format("CloseDialog('{0}');", roleId.ToString());
            ScriptManager.RegisterStartupScript(Page, typeof(Page), "closeScript", script, true);
        }
		string _ExprName;			// name of the expression; this isn't always set

		public NameLookup(IDictionary f, IDictionary p, IDictionary r, 
			IDictionary gbl, IDictionary u, IDictionary ascope, 
			Grouping ag, Matrix mt, CodeModules cm, Classes i, DataSetsDefn ds, Type ct)
		{
			fields=f;
			parameters=p;
			reportitems=r;
			globals=gbl;
			user=u;
			aggrScope = ascope;
			g=ag;
			m = mt;
			cms = cm;
			instances = i;
			dsets = ds;
			codeType = ct;
		}
		Visibility _Visibility;	// Indicates if all of the dynamic rows for this grouping
							// should be hidden and replaced with a subtotal row for
							// this grouping scope		

		public DynamicRows(ReportDefn r, ReportLink p, XmlNode xNode) : base(r, p)
		{
			_Grouping=null;
			_Sorting=null;
			_Subtotal=null;
			_ReportItems=null;
			_Visibility=null;
			// Run thru the attributes
			//			foreach(XmlAttribute xAttr in xNode.Attributes)
			//			{
			//			}

			// Loop thru all the child nodes
			foreach(XmlNode xNodeLoop in xNode.ChildNodes)
			{
				if (xNodeLoop.NodeType != XmlNodeType.Element)
					continue;
				switch (xNodeLoop.Name)
				{
					case "Grouping":
						_Grouping = new Grouping(r, this, xNodeLoop);
						break;
					case "Sorting":
						_Sorting = new Sorting(r, this, xNodeLoop);
						break;
					case "Subtotal":
						_Subtotal = new Subtotal(r, this, xNodeLoop);
						break;
					case "ReportItems":
						_ReportItems = new ReportItems(r, this, xNodeLoop);
						break;
					case "Visibility":
						_Visibility = new Visibility(r, this, xNodeLoop);
						break;
					default:	
						// don't know this element - log it
						OwnerReport.rl.LogError(4, "Unknown DynamicRow element '" + xNodeLoop.Name + "' ignored.");
						break;
				}
			}
			if (_Grouping == null)
				OwnerReport.rl.LogError(8, "DynamicRows requires the Grouping element.");
			if (_ReportItems == null || _ReportItems.Items.Count != 1)
				OwnerReport.rl.LogError(8, "DynamicRows requires the ReportItems element defined with exactly one report item.");
		}
Example #22
0
		List<Textbox> _GrowList;	// list of TextBox's that need to be checked for growth

		public List(ReportDefn r, ReportLink p, XmlNode xNode):base(r,p,xNode)
		{
			_Grouping=null;
			_Sorting=null;
			_ReportItems=null;
			_DataInstanceName="Item";
			_DataInstanceElementOutput=DataInstanceElementOutputEnum.Output;

			// Loop thru all the child nodes
			foreach(XmlNode xNodeLoop in xNode.ChildNodes)
			{
				if (xNodeLoop.NodeType != XmlNodeType.Element)
					continue;
				switch (xNodeLoop.Name)
				{
					case "Grouping":
						_Grouping = new Grouping(r, this, xNodeLoop);
						break;
					case "Sorting":
						_Sorting = new Sorting(r, this, xNodeLoop);
						break;
					case "ReportItems":
						_ReportItems = new ReportItems(r, this, xNodeLoop);
						break;
					case "DataInstanceName":
						_DataInstanceName = xNodeLoop.InnerText;
						break;
					case "DataInstanceElementOutput":
						_DataInstanceElementOutput = Oranikle.Report.Engine.DataInstanceElementOutput.GetStyle(xNodeLoop.InnerText, OwnerReport.rl);
						break;
					default:	
						if (DataRegionElement(xNodeLoop))	// try at DataRegion level
							break;
						// don't know this element - log it
						OwnerReport.rl.LogError(4, "Unknown List element '" + xNodeLoop.Name + "' ignored.");
						break;
				}
			}
			DataRegionFinish();			// Tidy up the DataRegion
		}
		Textbox _ToggleTextbox;	//  resolved TextBox for toggling visibility
	
		public TableGroup(ReportDefn r, ReportLink p, XmlNode xNode) : base(r, p)
		{
			_Grouping=null;
			_Sorting=null;
			_Header=null;
			_Footer=null;
			_Visibility=null;
			_ToggleTextbox=null;

			// Loop thru all the child nodes
			foreach(XmlNode xNodeLoop in xNode.ChildNodes)
			{
				if (xNodeLoop.NodeType != XmlNodeType.Element)
					continue;
				switch (xNodeLoop.Name)
				{
					case "Grouping":
						_Grouping = new Grouping(r, this, xNodeLoop);
						break;
					case "Sorting":
						_Sorting = new Sorting(r, this, xNodeLoop);
						break;
					case "Header":
						_Header = new Header(r, this, xNodeLoop);
						break;
					case "Footer":
						_Footer = new Footer(r, this, xNodeLoop);
						break;
					case "Visibility":
						_Visibility = new Visibility(r, this, xNodeLoop);
						break;
					default:	
						// don't know this element - log it
						OwnerReport.rl.LogError(4, "Unknown TableGroup element '" + xNodeLoop.Name + "' ignored.");
						break;
				}
			}
			if (_Grouping == null)
				OwnerReport.rl.LogError(8, "TableGroup requires the Grouping element.");
		}
Example #24
0
        public IAcceptGroups Add(Grouping grouping, object group, int indent)
        {
            XmlNode child = parent.ChildNodes[i];
            Assert.IsNotNull(child, "Too many results under " + parent.OuterXml + " in the search '" + search.Name + "'");

            IXenObject o = group as IXenObject;
            XmlAttribute opaqueref = child.Attributes["opaqueref"];
            XmlAttribute toString = child.Attributes["ToString"];
            if (o != null)
            {
                Assert.IsNotNull(opaqueref, "Expected group " + (toString == null ? "" : toString.Value) + ", found resource " + o.opaque_ref + " in the search '" + search.Name + "'");
                Assert.AreEqual(opaqueref.Value, o.opaque_ref, "Wrong resource found in the search '" + search.Name + "'");
            }
            else
            {
                string expected = grouping.GetGroupName(group);
                Assert.IsNotNull(toString, "Expected resource " + (opaqueref == null ? "" : opaqueref.Value) + ", found group " + expected + " in the search '" + search.Name + "'");
                Assert.AreEqual(toString.Value, expected, "Wrong group found in the search '" + search.Name + "'");
            }

            ++i;
            return new ComparerAdapter(search, child);
        }
		Textbox _ToggleTextbox;	//  resolved TextBox for toggling visibility
	
		public Details(ReportDefn r, ReportLink p, XmlNode xNode) : base(r, p)
		{
			_TableRows=null;
			_Grouping=null;
			_Sorting=null;
			_Visibility=null;
			_ToggleTextbox = null;

			// Loop thru all the child nodes
			foreach(XmlNode xNodeLoop in xNode.ChildNodes)
			{
				if (xNodeLoop.NodeType != XmlNodeType.Element)
					continue;
				switch (xNodeLoop.Name)
				{
					case "TableRows":
						_TableRows = new TableRows(r, this, xNodeLoop);
						break;
					case "Grouping":
						_Grouping = new Grouping(r, this, xNodeLoop);
						break;
					case "Sorting":
						_Sorting = new Sorting(r, this, xNodeLoop);
						break;
					case "Visibility":
						_Visibility = new Visibility(r, this, xNodeLoop);
						break;
					default:
						// don't know this element - log it
						OwnerReport.rl.LogError(4, "Unknown Details element " + xNodeLoop.Name + " ignored.");
						break;
				}
			}
			if (_TableRows == null)
				OwnerReport.rl.LogError(8, "Details requires the TableRows element.");
		}
Example #26
0
        public IAcceptGroups Add(Grouping grouping, object group, int indent)
        {
            IXenObject o = group as IXenObject;
            if (o != null)
            {
                XmlElement resultElement = doc.CreateElement("IXenObject");
                parent.AppendChild(resultElement);
                XmlAttribute uuidAttr = doc.CreateAttribute("opaqueref");
                uuidAttr.Value = (String)o.opaque_ref;
                resultElement.Attributes.Append(uuidAttr);

                return new XmlResultsAdapter(doc, resultElement);
            }
            else
            {
                XmlElement resultElement = doc.CreateElement("Object");
                parent.AppendChild(resultElement);
                XmlAttribute uuidAttr = doc.CreateAttribute("ToString");
                uuidAttr.Value = group.ToString();
                resultElement.Attributes.Append(uuidAttr);

                return new XmlResultsAdapter(doc, resultElement);
            }
        }
        public void ApplyTest()
        {
            DataTable input = new DataTable("Sample data");

            input.Columns.Add("Age", typeof(int));
            input.Columns.Add("Classification", typeof(string));

            input.Rows.Add(10, 0);
            input.Rows.Add(7, 0);
            input.Rows.Add(4, 0);
            input.Rows.Add(21, 1);
            input.Rows.Add(27, 1);
            input.Rows.Add(12, 0);
            input.Rows.Add(79, 0);
            input.Rows.Add(40, 0);
            input.Rows.Add(30, 0);
            input.Rows.Add(32, 0);


            {
                Grouping target = new Grouping();

                target.Proportion = 0.2;
                DataTable actual = target.Apply(input);

                DataRow[] a = actual.Select("Group = 0");
                DataRow[] b = actual.Select("Group = 1");

                Assert.AreEqual(2, a.Length);
                Assert.AreEqual(8, b.Length);
            }


            {
                Grouping target = new Grouping();

                target.Proportion = 0.5;
                DataTable actual = target.Apply(input);

                DataRow[] a = actual.Select("Group = 0");
                DataRow[] b = actual.Select("Group = 1");

                Assert.AreEqual(5, a.Length);
                Assert.AreEqual(5, b.Length);
            }

            {
                Grouping target = new Grouping();

                target.Columns.Add(new Grouping.Options("Classification"));

                target.Proportion = 0.5;
                DataTable actual = target.Apply(input);

                DataRow[] a = actual.Select("Group = 0");
                DataRow[] b = actual.Select("Group = 1");

                Assert.AreEqual(5, a.Length);
                Assert.AreEqual(5, b.Length);

                DataRow[] a0 = actual.Select("Group = 0 AND Classification = 0");
                DataRow[] a1 = actual.Select("Group = 0 AND Classification = 1");
                DataRow[] b0 = actual.Select("Group = 1 AND Classification = 0");
                DataRow[] b1 = actual.Select("Group = 1 AND Classification = 1");

                Assert.AreEqual(4, a0.Length);
                Assert.AreEqual(1, a1.Length);
                Assert.AreEqual(4, b0.Length);
                Assert.AreEqual(1, b1.Length);
            }

        }
        public void ApplyTest2()
        {

            DataTable input = new DataTable("Sample data");

            input.Columns.Add("Age", typeof(int));
            input.Columns.Add("Classification", typeof(string));

            for (int i = 0; i < 80; i++)
                input.Rows.Add(i, 0);

            for (int i = 0; i < 20; i++)
                input.Rows.Add(i, 1);

            {
                Grouping target = new Grouping();

                target.Proportion = 0.2;
                DataTable actual = target.Apply(input);

                DataRow[] a = actual.Select("Group = 0");
                DataRow[] b = actual.Select("Group = 1");

                Assert.AreEqual(20, a.Length);
                Assert.AreEqual(80, b.Length);
            }


            {
                Grouping target = new Grouping();

                target.Proportion = 0.5;
                DataTable actual = target.Apply(input);

                DataRow[] a = actual.Select("Group = 0");
                DataRow[] b = actual.Select("Group = 1");

                Assert.AreEqual(50, a.Length);
                Assert.AreEqual(50, b.Length);
            }

            {
                Grouping target = new Grouping();

                target.Columns.Add(new Grouping.Options("Classification"));

                target.Proportion = 0.5;
                DataTable actual = target.Apply(input);

                DataRow[] a = actual.Select("Group = 0");
                DataRow[] b = actual.Select("Group = 1");

                Assert.AreEqual(50, a.Length);
                Assert.AreEqual(50, b.Length);

                DataRow[] a0 = actual.Select("Group = 0 AND Classification = 0");
                DataRow[] a1 = actual.Select("Group = 0 AND Classification = 1");
                DataRow[] b0 = actual.Select("Group = 1 AND Classification = 0");
                DataRow[] b1 = actual.Select("Group = 1 AND Classification = 1");

                Assert.AreEqual(40, a0.Length);
                Assert.AreEqual(10, a1.Length);
                Assert.AreEqual(40, b0.Length);
                Assert.AreEqual(10, b1.Length);
            }

            {
                Grouping target = new Grouping();

                target.Columns.Add(new Grouping.Options("Classification"));

                target.Proportion = 0.6;
                DataTable actual = target.Apply(input);

                DataRow[] a = actual.Select("Group = 0");
                DataRow[] b = actual.Select("Group = 1");

                Assert.AreEqual(60, a.Length);
                Assert.AreEqual(40, b.Length);

                DataRow[] a0 = actual.Select("Group = 0 AND Classification = 0");
                DataRow[] a1 = actual.Select("Group = 0 AND Classification = 1");
                DataRow[] b0 = actual.Select("Group = 1 AND Classification = 0");
                DataRow[] b1 = actual.Select("Group = 1 AND Classification = 1");

                Assert.AreEqual(48, a0.Length);
                Assert.AreEqual(12, a1.Length);
                Assert.AreEqual(32, b0.Length);
                Assert.AreEqual(8, b1.Length);
            }


        }
Example #29
0
        protected Group ungrouped = null; //this is late bound

        #endregion Fields

        #region Constructors

        protected AbstractNodeGroup(Search search, Grouping grouping)
            : base(search)
        {
            this.grouped = new Dictionary<GroupKey, Group>();
            this.grouping = grouping;
        }
Example #30
0
 public GroupKey(Grouping grouping, object key)
 {
     this.grouping = grouping;
     this.key = key;
 }