【问题标题】:Query Concatenated Field (using SubSonic)查询连接字段(使用 SubSonic)
【发布时间】:2010-12-25 10:46:36
【问题描述】:

有没有办法使用 MS SQL 查询连接字段?例如,我想做的是:

Select FirstName+' '+LastName as FullName from Attendees where FullName like '%Joe Schmoe%'

以上行不通。我发现的作品是:

Select * from Attendee where FirstName+' '+LastName like '%Joe Schmoe%'

但我不知道如何使用 SubSonic SqlQuery 来做到这一点。我有许多动态添加的连接和 OR 语句,我不想​​手动写出 sql。

有什么帮助/想法吗?

【问题讨论】:

    标签: sql sql-server subsonic concatenation


    【解决方案1】:

    这个怎么样:

    SELECT FullName 
    FROM (SELECT FirstName+' '+LastName as FullName 
          FROM Attendees) X
    WHERE FullName LIKE '%Joe Schmoe%'
    

    【讨论】:

    • 你能告诉我如何用 SubSonic 做到这一点吗?我编写一个有效的直接 SQL 查询没有问题。我只需要能够使用 SubSonic 来做到这一点。
    【解决方案2】:

    您可以在查询的 Where 部分中指定您的条件,如下所示:

    List<Attendee> cardHolders = new YourDB()
      .Select
      .From<Attendee>()
      .Where(AttendeeTable.FirstNameColumn + " + ' ' + " + AttendeeTable.SurnameColumn + " AS FullName")
      .Like("%Joe Schmoe%")
      .ExecuteTypedList<Attendee>();
    

    【讨论】:

    • 不幸的是,这使得 sql 看起来像 "OR FirstName + ' ' + LastName LIKE @FirstName+''+LastName14" 这是一个无效的变量声明。
    • 很奇怪,对我来说很好用。如果你尝试 (AttendeeTable.FirstNameColumn + " + ' ' + " + AttendeeTable.SurnameColumn + " AS FullName")
    【解决方案3】:

    似乎在 SubSonic 中是不可能的

    【讨论】:

      【解决方案4】:

      游戏这么晚了,但是,如果您使用 SubSonic Select(),您可以使用 SQL CONCAT 连接多个列,然后再将它们加载到 DataGrid 的 DataTable 中,例如

          SubSonic.SqlQuery query = new SubSonic.Select(
           "CONCAT(FirstName, ' ', LastName) as FullName"
           ).From("Attendees").Where("LastName").Like("%Schmoe%");
          return query;
      

      这也是我一直在寻找的东西,只是想看看 SubSonic 是否允许我在 SubSonic.SqlQuery 的 Select 部分中使用 SQL CONCAT。希望这可以帮助其他人。

      【讨论】:

        猜你喜欢
        • 2018-07-03
        • 1970-01-01
        • 2021-05-13
        • 2014-12-13
        • 1970-01-01
        • 2011-04-29
        • 1970-01-01
        • 1970-01-01
        • 2021-02-21
        相关资源
        最近更新 更多