亚音速查询:问题与产生的查询

问题描述:

我有亚音速查询的问题。该协议是,我有一个观点,我想查询它的数据来生成类似下面的SQL语句:亚音速查询:问题与产生的查询

select * 
from myView 
where (col1 like '%a%' or col2 like '%a%' or col3 like '%a%') 
    and col4 = 1 and col5 = 2 

而是说是submited到数据库查询是这样的:

select * 
from myView 
where col1 like '%a%' or col2 like '%a%' or col3 like '%a%' 
    and col4 = 1 and col5 = 2 

有没有办法做一些像fisrt查询?

请注意我使用.NET 2.0和2.2亚音速

预先感谢您。

即使这样,亚音速规则!

+1

你可以发布你当前的代码? – empi 2009-11-16 20:55:10

您需要使用Constraint ExpressionsWhereExpression,AndExpression,OrExpression,EndExpression

“WhereExpression”(或Or/AndExpression)后面的任何内容都将被括在圆括号中。您可以使用“CloseExpression()”来关闭表达式,或者如果另一个被启动(如上面的OrExpression),或者查询结束,它将被关闭。

另请参阅:Using Nested Where/And/Or

如果您发布您的当前代码,也许我可以给出更具体的答案,但基本上你必须开始WhereExpression。 对于这样的示例代码:

var usersQuery = new Select(new SubSonic.TableSchema.TableColumn[] { User.UserIdColumn, User.NameColumn }) 
      .From(User.Schema)    
      .WhereExpression(User.UserIdColumn.ColumnName).IsEqualTo(1).Or(User.UserIdColumn).IsEqualTo(2) 
      .CloseExpression() 
      .And(User.NameColumn).Like("a") 

给出的查询,如:

SELECT [dbo].[Users].[UserId], [dbo].[Users].[Name] 
FROM [dbo].[Users] 
WHERE ([dbo].[Users].[UserId] = @UserId0 OR [dbo].[Users].[UserId] = @UserId) 
AND [dbo].[Users].[Name] LIKE @Name