在哪里执行单选

时间:2009-05-21 13:12:28

标签: c# .net sql subsonic

我想用亚音速2.2

实现以下SQL语句
SELECT Product.* FROM Product WHERE Product.OurPrice <> Product.RetailPrice  

我开始使用的亚音速选择查询:

SubSonic.SqlQuery select = new SubSonic.Select()
.From<Product>()
.Where(Product.Columns.OurPrice)
.IsNotEqualTo(... object /*Should be Product.Columns.RetailPrice, but that's giving and exception*/...);

我的问题是如何告诉SubSonic 2.2在同一个表中针对另一列生成where条件。

3 个答案:

答案 0 :(得分:0)

看起来您正在尝试比较查询中的两列。除非您使用内联查询,否则这在SubSonic 2.2中是不可能的:

http://subsonicproject.com/docs/Inline_Query_Tool

您还可以使用基于视图或表格的功能。

答案 1 :(得分:0)

上述问题的解决方案:

ProductCollection products = new SubSonic.InlineQuery().ExecuteAsCollection<ProductCollection>
(@"SELECT Product.ProductId, ... Product.ModifiedBy, Product.ModifiedOn, Product.IsDeleted FROM Product WHERE (Product.OurPrice <> Product.RetailPrice)");

Repeater1.DataSource = products;
Repeater1.DataBind();

答案 2 :(得分:0)

您可以使用旧的Query对象(仍包含在2.2中),如下所示:

Query q = new Query(Product.Schema.TableName).WHERE("OurPrice <> RetailPrice");
ProductCollection products = new ProductCollection();
products.LoadAndCloseReader(q.ExecuteReader());