SubSonic别名/ Where子句

时间:2010-03-15 07:10:14

标签: c# subsonic replace alias sql-function

我想将以下SQL查询转换为SubSonic查询。

SELECT [dbo].[tbl_Agency].[ParentCompanyID] FROM [dbo].[tbl_Agency] WHERE REPLACE(PhoneNumber, ' ', '') LIKE REPLACE('%9481 1111%', ' ', '')

我以为我会像下面那样做,但我无法让它产生有效的SQL。

     //SubSonic
     string agencyPhoneNumber = "9481 1111";
     SubSonic.SqlQuery subQueryagencyPhoneNumber = new SubSonic.Select(Agency.ParentCompanyIDColumn.ColumnName);
            subQueryagencyPhoneNumber.From(Agency.Schema.TableName);

     //WHERE
     subQueryagencyPhoneNumber.Where("REPLACE(" + Agency.PhoneNumberColumn.ColumnName + ", ' ', '')").Like("%" + agencyPhoneNumber + "%");

有没有人知道如何解决这个问题 - 我正在使用SubSonic 2.2。 我觉得我在这里服用疯子 - 这应该是直截了当的,对吗?

干杯, JohnBob

2 个答案:

答案 0 :(得分:1)

我认为您需要将类似的表达式添加到内联SQL中 类似的东西:

var whereSql = string.Format("REPLACE({0}, ' ', '') Like '%{1}%'", Agency.PhoneNumberColumn.ColumnName, agencyPhoneNumber);

subQueryagencyPhoneNumber.Where(whereSql);

Calling an SQL function from a Subsonic.Select

上查看类似的问题

答案 1 :(得分:1)

如果真正复杂的查询出现最糟糕的情况,您仍然可以使用@ http://subsonicproject.com/docs/CodingHorror

所述的.CodingHorror()方法使用亚音速

只要您选择亚音速知道何时投射集合的有效列名称 - > .ExecuteAsCollection()你会很好,仍然可以使用你的活动记录。

当我有大量复杂的查询时,这已经让我失去了很多次。只需确保仍然使用参数并清理语句,以便对输入进行清理。