⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 orderbyparser.cs

📁 NHibernate NET开发者所需的
💻 CS
字号:
using NHibernate.Util;

namespace NHibernate.Hql.Classic
{
	/// <summary> 
	/// Parses the ORDER BY clause of a query
	/// </summary>
	public class OrderByParser : IParser
	{
		// This uses a PathExpressionParser but notice that compound paths are not valid,
		// only bare names and simple paths:

		// SELECT p FROM p IN CLASS eg.Person ORDER BY p.Name, p.Address, p

		// The reason for this is SQL doesn't let you sort by an expression you are
		// not returning in the result set.

		private readonly PathExpressionParser pathExpressionParser = new PathExpressionParser();

		public void Token(string token, QueryTranslator q)
		{
			if (q.IsName(StringHelper.Root(token)))
			{
				ParserHelper.Parse(pathExpressionParser, q.Unalias(token), ParserHelper.PathSeparators, q);
				q.AppendOrderByToken(pathExpressionParser.WhereColumn);
				pathExpressionParser.AddAssociation(q);
			}
			else if (token.StartsWith(ParserHelper.HqlVariablePrefix))
			{
				q.AddNamedParameter(token.Substring(1));
				q.AppendOrderByParameter();
			}
			else
			{
				q.AppendOrderByToken(token);
			}
		}

		public void Start(QueryTranslator q)
		{
		}

		public void End(QueryTranslator q)
		{
		}

		public OrderByParser()
		{
			pathExpressionParser.UseThetaStyleJoin = true;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -