private static IEnumerable <QueryConditionValueDef> GetConditionPartParams(SqlQueryConditionPart part) { if (part.Params != null) { foreach (var param in part.Params.Where(param => !String.IsNullOrEmpty(param.Name))) { yield return(param); } } if (part.SubQuery != null) { foreach (var param in part.SubQuery.GetAllParams()) { yield return(param); } } }
private static SqlQueryConditionPart BuildConditionPart(SqlQuery query, QueryConditionPartDef part, IDataContext dataContext) { if (query == null) { throw new ArgumentNullException("query"); } if (part == null) { throw new ArgumentNullException("part"); } var single = part.Attribute as QuerySingleAttributeDef; if (single != null) { var source = query.FindSource(single.Attribute.Source); var attr = single.Attribute.AttributeId != Guid.Empty ? source.GetAttribute(single.Attribute.AttributeId) : source.GetAttribute(single.Attribute.AttributeName); var attrRef = new SqlQuerySourceAttributeRef(source, attr); var sqPart = new SqlQueryConditionPart(); sqPart.Attributes.Add(attrRef); return(sqPart); } var exp = part.Attribute as QueryExpAttributeDef; if (exp != null) { var sqPart = new SqlQueryConditionPart { Expression = exp.Expression }; foreach (var attribute in exp.Attributes) { var source = query.FindSource(attribute.Source); var attr = attribute.AttributeId != Guid.Empty ? source.GetAttribute(attribute.AttributeId) : source.GetAttribute(attribute.AttributeName); var attrRef = new SqlQuerySourceAttributeRef(source, attr); sqPart.Attributes.Add(attrRef); } return(sqPart); } var sub = part.Attribute as QuerySubAttributeDef; if (sub != null && sub.SubQuery != null) { var sqlSub = Build(dataContext, sub.SubQuery.QueryDef); var sqPart = new SqlQueryConditionPart { SubQuery = sqlSub, SubQueryAttribute = BuildAttribute(sqlSub, sub.SubQueryAttribute) }; return(sqPart); } if (part.SubQuery != null) { var sqlSub = Build(dataContext, part.SubQuery.QueryDef); var sqPart = new SqlQueryConditionPart { SubQuery = sqlSub, SubQueryAttribute = BuildAttribute(sqlSub, part.Attribute) }; return(sqPart); } return(new SqlQueryConditionPart { Params = part.Params }); }
private static IEnumerable <QueryConditionValueDef> FindConditionPartParams(string paramName, SqlQueryConditionPart part) { if (part.Params != null) { foreach (var param in part.Params.Where( param => param.Name != null && String.Equals(param.Name, paramName, StringComparison.InvariantCultureIgnoreCase))) { yield return(param); } } if (part.SubQuery != null) { foreach (var param in part.SubQuery.FindParams(paramName)) { yield return(param); } } }