2 // System.Data.RelatedDataView
\r
5 // Konstantin Triger (kostat@mainsoft.com)
\r
9 using System.Collections;
\r
10 using Mono.Data.SqlExpressions;
\r
11 using System.Data.Common;
\r
13 namespace System.Data
\r
16 /// Summary description for RelatedDataView.
\r
18 internal class RelatedDataView : DataView, IExpression
\r
22 object[] _keyValues;
\r
23 DataColumn[] _columns;
\r
25 #endregion // Fields
\r
27 #region Constructors
\r
28 internal RelatedDataView(DataColumn[] relatedColumns,object[] keyValues)
\r
30 dataTable = relatedColumns[0].Table;
\r
31 _columns = relatedColumns;
\r
32 _keyValues = keyValues;
\r
37 #endregion // Constructors
\r
41 internal override IExpression FilterExpression {
\r
48 #endregion // Methods
\r
50 #region IExpression Members
\r
52 public object Eval(DataRow row) {
\r
53 return EvalBoolean(row);
\r
56 public bool EvalBoolean(DataRow row) {
\r
57 for (int i = 0; i < _columns.Length; i++)
\r
58 if (!row[_columns[i]].Equals(_keyValues[i]))
\r
61 IExpression filter = base.FilterExpression;
\r
62 return filter != null ? filter.EvalBoolean(row) : true;
\r
65 public bool DependsOn(DataColumn other) {
\r
66 for (int i = 0; i < _columns.Length; i++)
\r
67 if (_columns[i] == other)
\r
70 IExpression filter = base.FilterExpression;
\r
71 return filter != null ? filter.DependsOn(other) : false;
\r