【问题标题】:Subsonic - Simple Query亚音速 - 简单查询
【发布时间】:2009-05-28 02:28:33
【问题描述】:

我有一个有 2 列的表

Val1 整数

Val2 整数

我的查询很简单。

我想收集有条件的记录 (val1=Val2),

等价于 (Select * from table where Val1=Val2)

我试试

IDataReader rdr = new Query("Table").WHERE("Val1=Val2").ExecuteReader(); tableColl.LoadAndCloseReader(rdr); rdr.Close();

  ..WHERE (" 'Val1=Val2' ")
  ..WHERE (Table.Columns.Val1,IsEqualTo,Table.Columns.Val2) //This not reguler I know
  ..WHERE ("Val"+'='+"Val2") 
  .....

任何帮助都会更加有效。

谢谢。

【问题讨论】:

    标签: subsonic


    【解决方案1】:

    不幸的是,据我所知,您需要将此作为内联查询:

    TableCollection tableCollection = new InlineQuery()  
      .ExecuteAsCollection<TableCollection>(
        "SELECT * FROM " + Table.Schema.TableName " WHERE " + Table.Columns.Val1 + " = " + Table.Columns.Val2);  
    

    【讨论】:

    • 感谢您的快速回答。很抱歉缺少信息。我正在使用 Versiyon 2.0.3。我认为 DB.Select()... 在 2.0.3 版本中不支持。
    • 没问题,我意识到它不会像我最初建议的那样工作。 InlineQuery 应该存在于 2.0.3 中并且可以工作
    • 感谢您的回答。不幸的是 InlineQuery() 在 2.0.3 中不被支持。看来我必须升级 2.1 版本。
    • 我建议跳过 2.1 并为 2.2 编译源代码,而不是其中有一堆错误修正。 blog.wekeroad.com/subsonic/subsonic-22-released
    • 事实上你可以在这里得到二进制文件code.google.com/p/subsonicproject/downloads/list
    【解决方案2】:

    最近遇到同样的情况,想出了这个:

    TableCollection tablecollection = new TableCollection;
    Comparison comp = Comparison.Equals;
    tablecollection.Where(Table.Columns.Val1, comp, Table.Columns.Val2);
    tablecollection.Load();
    

    我发现这更好,因为我不喜欢内联查询。它给了 如果您希望允许在您的应用中进行临时查询,则更灵活。

    【讨论】:

    • 您好,感谢您的回答。但我在 2.0.3 版中尝试过它并没有达到我的预期。假设 3. param like 参数。 (如 tablecollection.Where(Table.Columns.Val1, comp, 5); 并生成如下所示的 sql /* GetSelectSql(Table1) */ SELECT TOP 100 PERCENT [dbo].[Table1].[ID], [dbo]。 [Table1].[Val1], [dbo].[Table1].[Val2] FROM [dbo].[Table1] WHERE [Table1].[Val1] = @Val20 ORDER BY [ID] ASC;在 2.0 中你累了吗.3 ?
    【解决方案3】:
    private void CreateDynamicControls()
    {
    
    
        panGvHolder.Controls.Clear();
    
        Query qry = Northwind.Product.CreateQuery();
        qry.Columns.AddRange(Northwind.Product.Schema.Columns);
        qry.WHERE("UnitPrice > 15").AND("UnitsInStock < 20 ");
        //WHERE("UnitPrice > 15").AND("UnitsInStock < 30 ");
    
    
    
        using (IDataReader rdr = qry.ExecuteReader())
        {
            Response.Write("<table>");
            while (rdr.Read())
            {
                Response.Write("<tr>");
                for (int i = 0; i < rdr.FieldCount; i++)
                {
                    Response.Write("<td>");
                    Response.Write(rdr[i].ToString() + " ");
                    Response.Write("<td>");
                } //eof for 
                Response.Write("</br>");
                Response.Write("</tr>");
            }
            Response.Write("<table>");
        }
    } //eof method
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多