public IEnumerable <GroupResult> Group(string byField, string extraField, SqlFunction f, string functionField, string havingSection) { var sb = new StringBuilder(); sb.Append("SELECT " + byField); if (extraField + "" != "") { sb.Append(", " + extraField); } sb.Append(", " + f.ToString().ToUpper() + "(" + functionField + ")"); sb.Append(" FROM " + Table.TableName); sb.Append(" WHERE " + GetCriteria()); sb.Append(" GROUP BY " + byField); if (extraField + "" != "") { sb.Append(", " + extraField); } if (havingSection + "" != "") { sb.Append(" HAVING " + havingSection); } sb.Append(";"); var sql = sb.ToString(); var fieldsNames = new List <string> { "groupedByField", "functionField" }; if (extraField + "" != "") { fieldsNames.Insert(1, "extraField"); } var fields = (from fn in fieldsNames select typeof(GroupResult).GetField(fn)).ToList(); var result = new QueryNonTableEnumerable <GroupResult> (Table.MyDataSource, fields, sql); return(result); }
public IEnumerable <GroupResult> Group(string byField, string extraField, SqlFunction f, string functionField, string havingSection) { var sb = new StringBuilder(); sb.Append("SELECT " + byField); if (extraField + "" != "") { sb.Append(", " + extraField); } sb.Append(", " + f.ToString().ToUpper() + "(" + functionField + ")"); sb.Append(" FROM " + FromSection); sb.Append(GetWhere(null)); sb.Append(" GROUP BY " + byField); if (extraField + "" != "") { sb.Append(", " + extraField); } if (havingSection + "" != "") { sb.Append(" HAVING " + havingSection); } sb.Append(";"); var sql = sb.ToString(); var resultRecordFields = new List <string> { "groupedByField", "functionField" }; if (extraField + "" != "") { resultRecordFields.Insert(1, "extraField"); } var groupFields = (from fn in resultRecordFields select typeof(GroupResult).GetField(fn)).ToList(); var result = new QueryNonTableEnumerable <GroupResult> (Src, groupFields, sql); return(result); }