Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ EvaluateDependentExpressions() [2/2]

void System.Data.DataTable.EvaluateDependentExpressions ( List< DataColumn > columns,
DataRow row,
DataRowVersion version,
List< DataRow > cachedRows )
inlinepackageinherited

Definition at line 6136 of file DataTable.cs.

6137 {
6138 if (columns == null)
6139 {
6140 return;
6141 }
6142 int count = columns.Count;
6143 for (int i = 0; i < count; i++)
6144 {
6145 if (columns[i].Table != this)
6146 {
6147 continue;
6148 }
6149 DataColumn dataColumn = columns[i];
6150 if (dataColumn.DataExpression != null && dataColumn.DataExpression.HasLocalAggregate())
6151 {
6152 DataRowVersion dataRowVersion = ((version == DataRowVersion.Proposed) ? DataRowVersion.Default : version);
6153 bool flag = dataColumn.DataExpression.IsTableAggregate();
6154 object newValue = null;
6155 if (flag)
6156 {
6157 newValue = dataColumn.DataExpression.Evaluate(row, dataRowVersion);
6158 }
6159 for (int j = 0; j < Rows.Count; j++)
6160 {
6161 DataRow dataRow = Rows[j];
6162 if (dataRow.RowState != DataRowState.Deleted && (dataRowVersion != DataRowVersion.Original || (dataRow._oldRecord != -1 && dataRow._oldRecord != dataRow._newRecord)))
6163 {
6164 if (!flag)
6165 {
6166 newValue = dataColumn.DataExpression.Evaluate(dataRow, dataRowVersion);
6167 }
6169 }
6170 }
6171 }
6172 else if (row.RowState != DataRowState.Deleted && (version != DataRowVersion.Original || (row._oldRecord != -1 && row._oldRecord != row._newRecord)))
6173 {
6174 SilentlySetValue(row, dataColumn, version, (dataColumn.DataExpression == null) ? dataColumn.DefaultValue : dataColumn.DataExpression.Evaluate(row, version));
6175 }
6176 }
6178 for (int k = 0; k < count; k++)
6179 {
6180 DataColumn dataColumn2 = columns[k];
6181 if (dataColumn2.Table == this && (dataColumn2.DataExpression == null || dataColumn2.DataExpression.HasLocalAggregate()))
6182 {
6183 continue;
6184 }
6185 DataRowVersion dataRowVersion2 = ((version == DataRowVersion.Proposed) ? DataRowVersion.Default : version);
6186 if (cachedRows != null)
6187 {
6188 foreach (DataRow cachedRow in cachedRows)
6189 {
6190 if (cachedRow.Table == dataColumn2.Table && (dataRowVersion2 != DataRowVersion.Original || cachedRow._newRecord != cachedRow._oldRecord) && cachedRow != null && cachedRow.RowState != DataRowState.Deleted && (version != DataRowVersion.Original || cachedRow._oldRecord != -1))
6191 {
6192 object newValue2 = dataColumn2.DataExpression.Evaluate(cachedRow, dataRowVersion2);
6194 }
6195 }
6196 }
6197 for (int l = 0; l < ParentRelations.Count; l++)
6198 {
6199 DataRelation dataRelation = ParentRelations[l];
6200 if (dataRelation.ParentTable != dataColumn2.Table)
6201 {
6202 continue;
6203 }
6204 DataRow[] parentRows = row.GetParentRows(dataRelation, version);
6205 foreach (DataRow dataRow2 in parentRows)
6206 {
6207 if ((cachedRows == null || !cachedRows.Contains(dataRow2)) && (dataRowVersion2 != DataRowVersion.Original || dataRow2._newRecord != dataRow2._oldRecord) && dataRow2 != null && dataRow2.RowState != DataRowState.Deleted && (version != DataRowVersion.Original || dataRow2._oldRecord != -1))
6208 {
6209 object newValue3 = dataColumn2.DataExpression.Evaluate(dataRow2, dataRowVersion2);
6211 }
6212 }
6213 }
6214 for (int n = 0; n < ChildRelations.Count; n++)
6215 {
6216 DataRelation dataRelation2 = ChildRelations[n];
6217 if (dataRelation2.ChildTable != dataColumn2.Table)
6218 {
6219 continue;
6220 }
6221 DataRow[] childRows = row.GetChildRows(dataRelation2, version);
6222 foreach (DataRow dataRow3 in childRows)
6223 {
6224 if ((cachedRows == null || !cachedRows.Contains(dataRow3)) && (dataRowVersion2 != DataRowVersion.Original || dataRow3._newRecord != dataRow3._oldRecord) && dataRow3 != null && dataRow3.RowState != DataRowState.Deleted && (version != DataRowVersion.Original || dataRow3._oldRecord != -1))
6225 {
6226 object newValue4 = dataColumn2.DataExpression.Evaluate(dataRow3, dataRowVersion2);
6228 }
6229 }
6230 }
6231 }
6232 }
bool ICollection< KeyValuePair< TKey, TValue > >. Contains(KeyValuePair< TKey, TValue > keyValuePair)
DataRowCollection Rows
Definition DataTable.cs:701
DataRelationCollection ParentRelations
Definition DataTable.cs:572
void SilentlySetValue(DataRow dr, DataColumn dc, DataRowVersion version, object newValue)
DataRelationCollection ChildRelations
Definition DataTable.cs:324

References System.Data.DataTable.ChildRelations, System.Collections.Generic.Dictionary< TKey, TValue >.Contains(), System.Data.DataRowCollection.Count, System.Data.InternalDataCollectionBase.Count, System.count, System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Runtime.Serialization.Dictionary, System.Data.DataTable.ParentRelations, System.Data.DataTable.Rows, and System.Data.DataTable.SilentlySetValue().