我在我的应用程序中添加搜索。我希望获得所有已售产品的清单,并按价格计算平均值。
例如:
我可以写:
关键字:Iphone 7初始日期:2017年8月1日最终日期:201/08/13
我希望在两个日期之间使用Iphone 7计算所有销售的产品。
答案 0 :(得分:0)
在最简单的实施中,您需要 1.解析逻辑 - 将字符串放入可以使用的对象中的东西 来自:关键字:Iphone 7初始日期:2017年8月1日最终日期:201/08/13
为:
// this is an example
public class SearchCriteria
{
public string Keyword {get;set;}
public string From {get;set;}
public string To {get;set;}
}
public class Parser
{
public SearchCriteria Parse(string searchExpression)
{
var keyword = string.Empty;
var from = DateTime.Min;
var to = DateTime.Max;
// To do
// ... parse your string here
//
return new SearchCriteria(){Keyword = keyword, From = from, To = to};
}
}
2。用于查询转换和执行的对象。你有很多可能的选择,ADO,Linq,EF,ORM,Micro-ORM ......任何可以为你提供记录集/集合的东西
public class ProductsAndAveragePrice
{
public List<Products> Products {get;set;}
public decimal AveragePrice {get;set;}
}
public ProductsAndAveragePrice GetProducts(SearchCriteria criteria)
{
// pretend SQL String Based repo
var sb = new StringBuilder();
sb.AppendLine("SELECT ProductName, Price ");
sb.AppendLine("FROM MyProductsTable");
sb.AppendLine("WHERE Keyword = @keyword");
sb.AppendLine("AND From >= @from");
sb.AppendLine("AND To <= @to");
// To do
// ...supply the parameters and execute the query
var products = new List<Product>();
foreach(var row in rows)
{
products.Add(new Product() {Name = row["ProductName"], Price = row["Price"]};
}
return new ProductsAndAveragePrice(){
Products = products,
Price = products.Select(m => m.Price).Ave();
};
}
你得到漂移。