|
namespace System.Web.UI.WebControls.Expressions {
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
using System.Web.UI;
[
ParseChildren(true, "Expressions"),
PersistChildren(false)
]
public class QueryExpression {
private HttpContext _context;
private Control _owner;
private IQueryableDataSource _dataSource;
private DataSourceExpressionCollection _expressions;
[
PersistenceMode(PersistenceMode.InnerDefaultProperty)
]
public DataSourceExpressionCollection Expressions {
get {
if (_expressions == null) {
_expressions = new DataSourceExpressionCollection();
}
return _expressions;
}
}
public void Initialize(Control owner, HttpContext context, IQueryableDataSource dataSource) {
_owner = owner;
_context = context;
_dataSource = dataSource;
Expressions.SetContext(owner, context, dataSource);
}
public virtual IQueryable GetQueryable(IQueryable source) {
if (source == null) {
return null;
}
foreach (DataSourceExpression e in Expressions) {
source = e.GetQueryable(source) ?? source;
}
return source;
}
}
}
|