我有一个表有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")
.....
任何帮助都会更加灵活。
感谢。
答案 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