daelmo wrote:
Depends on where you have that filter. Please post the code that fails.
This fails:
DbUtils.ActualConnectionString = ConfigurationManager.ConnectionStrings["local"].ToString();
var derivedTableFields = new ResultsetFields(4);
derivedTableFields.DefineField(TopicTextFields.LanguageCode, 0);
derivedTableFields.DefineField(TopicBaseFields.CountryCode, 1);
derivedTableFields.DefineField(TopicBaseFields.ReportDate, 2);
derivedTableFields.DefineField(TopicBaseFields.IDTopic, 3);
derivedTableFields[2].AggregateFunctionToApply = AggregateFunction.Max;
derivedTableFields[3].AggregateFunctionToApply = AggregateFunction.Max;
var groupByClause = new GroupByCollection {derivedTableFields[0]};
PredicateExpression filter = null;
filter = new PredicateExpression(TopicTextFields.LanguageCode == "en");
var dtDefinition = new DerivedTableDefinition(derivedTableFields, "OuterSelectAlias", filter, groupByClause);
var relation = new DynamicRelation(dtDefinition, JoinHint.Inner,
EntityType.TopicBaseEntity, "DerivedTableAlias",
(new EntityField(TopicBaseFieldIndex.IDTopic.ToString(), "OuterSelectAlias",
typeof (string)) ==
TopicBaseFields.IDTopic.SetObjectAlias("DerivedTableAlias")));
var relations = new RelationCollection {relation};
relations.SelectListAlias = "DerivedTableAlias";
var topicBaseCollection = new TopicBaseCollection();
topicBaseCollection.GetMulti(null, relations);
But this works:
DbUtils.ActualConnectionString = ConfigurationManager.ConnectionStrings["local"].ToString();
var derivedTableFields = new ResultsetFields(3);
//derivedTableFields.DefineField(TopicTextFields.LanguageCode, 0);
derivedTableFields.DefineField(TopicBaseFields.CountryCode, 0);
derivedTableFields.DefineField(TopicBaseFields.ReportDate, 1);
derivedTableFields.DefineField(TopicBaseFields.IDTopic, 2);
derivedTableFields[1].AggregateFunctionToApply = AggregateFunction.Max;
derivedTableFields[2].AggregateFunctionToApply = AggregateFunction.Max;
var groupByClause = new GroupByCollection {derivedTableFields[0]};
PredicateExpression filter = null;
//filter = new PredicateExpression(TopicTextFields.LanguageCode == "en");
var dtDefinition = new DerivedTableDefinition(derivedTableFields, "OuterSelectAlias", filter, groupByClause);
var relation = new DynamicRelation(dtDefinition, JoinHint.Inner,
EntityType.TopicBaseEntity, "DerivedTableAlias",
(new EntityField(TopicBaseFieldIndex.IDTopic.ToString(), "OuterSelectAlias",
typeof (string)) ==
TopicBaseFields.IDTopic.SetObjectAlias("DerivedTableAlias")));
var relations = new RelationCollection {relation};
relations.SelectListAlias = "DerivedTableAlias";
var topicBaseCollection = new TopicBaseCollection();
topicBaseCollection.GetMulti(null, relations);
HTH
Neil