//--------------------------------------------------------------------- // // Portions of this file copyright (c) Microsoft Corporation // and are released under the Microsoft Pulic License. See // http://archive.msdn.microsoft.com/EFSampleProvider/Project/License.aspx // or License.txt for details. // All rights reserved. // //--------------------------------------------------------------------- namespace System.Data.SQLite { using System; using System.Globalization; /// /// TopClause represents the a TOP expression in a SqlSelectStatement. /// It has a count property, which indicates how many TOP rows should be selected and a /// boolen WithTies property. /// class TopClause : ISqlFragment { ISqlFragment topCount; bool withTies; /// /// Do we need to add a WITH_TIES to the top statement /// internal bool WithTies { get { return withTies; } } /// /// How many top rows should be selected. /// internal ISqlFragment TopCount { get { return topCount; } } /// /// Creates a TopClause with the given topCount and withTies. /// /// /// internal TopClause(ISqlFragment topCount, bool withTies) { this.topCount = topCount; this.withTies = withTies; } /// /// Creates a TopClause with the given topCount and withTies. /// /// /// internal TopClause(int topCount, bool withTies) { SqlBuilder sqlBuilder = new SqlBuilder(); sqlBuilder.Append(topCount.ToString(CultureInfo.InvariantCulture)); this.topCount = sqlBuilder; this.withTies = withTies; } #region ISqlFragment Members /// /// Write out the TOP part of sql select statement /// It basically writes TOP (X) [WITH TIES]. /// /// /// public void WriteSql(SqlWriter writer, SqlGenerator sqlGenerator) { writer.Write(" LIMIT "); this.TopCount.WriteSql(writer, sqlGenerator); if (this.WithTies) throw new NotSupportedException("WITH TIES"); //writer.Write(" "); //if (this.WithTies) //{ // writer.Write("WITH TIES "); //} } #endregion } }