public static int?TryGetOrAddColumn(DbSqlQueryExpression sqlQuery, DbExpression exp, string addDefaultAlias = UtilConstants.DefaultColumnAlias) { if (exp == null) { return(null); } List <DbColumnSegment> columnList = sqlQuery.ColumnSegments; DbColumnSegment columnSeg = null; int?ordinal = null; for (int i = 0; i < columnList.Count; i++) { var item = columnList[i]; if (DbExpressionEqualityComparer.EqualsCompare(item.Body, exp)) { ordinal = i; columnSeg = item; break; } } if (ordinal == null) { string alias = Utils.GenerateUniqueColumnAlias(sqlQuery, addDefaultAlias); columnSeg = new DbColumnSegment(exp, alias); columnList.Add(columnSeg); ordinal = columnList.Count - 1; } return(ordinal.Value); }
public static DbExpression TryGetOrAddNullChecking(DbSqlQueryExpression sqlQuery, DbTable table, DbExpression exp) { if (exp == null) { return(null); } List <DbColumnSegment> columnList = sqlQuery.ColumnSegments; DbColumnSegment columnSeg = null; columnSeg = columnList.Where(a => DbExpressionEqualityComparer.EqualsCompare(a.Body, exp)).FirstOrDefault(); if (columnSeg == null) { string alias = Utils.GenerateUniqueColumnAlias(sqlQuery); columnSeg = new DbColumnSegment(exp, alias); columnList.Add(columnSeg); } DbColumnAccessExpression cae = new DbColumnAccessExpression(table, DbColumn.MakeColumn(columnSeg.Body, columnSeg.Alias)); return(cae); }