亚音速 - 简单查询

时间:2009-04-23 10:47:58

标签: subsonic

我有一个表有2列

Val1 int

Val2 int

我的查询非常简单。

我想得到记录的集合有条件(val1 = Val2),

相当于(从表中选择*,其中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") 
  .....

任何帮助都会更加灵活。

感谢。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

最近出现了同样的情况并提出了这个问题:

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

我发现这更好,因为我不喜欢内联查询。它给了 如果您希望允许在您的app中进行adhoc查询,则可以获得更大的灵活性。

答案 2 :(得分:0)

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