2

下午,我正在尝试进行简单的搜索,该搜索适用于产品标题。但是我需要在搜索中添加其他参数。我有下面代码的基础,至少我认为它应该是。我已经注释掉了其他项目

有人可以提供一些指导,因为我被困在自动取款机上。

var query = from a in dc.aProducts
            join t in dc.bProducts on a.sku equals t.sku
            where SqlMethods.Like(t.title, "%" + productName + "%")

            //Compare Prices
            //&& (p => (double)p.Price >= priceFrom && (double)p.Price <= priceTo)
            //Product SKU
            //t.sku == productSku
            //Product Brand
            //t.brand == productBrand
            //a.asin == productAsin
            //a.Live == IsLive

非常感谢您,非常感谢所有帮助。

4

2 回答 2

3

我很想做这样的事情:

bool comparePrices = true;

// Join tables and get all products into query
var query = from a in dc.aProducts
            join t in dc.bProducts on a.sku equals t.sku
            select a;

// Now go through each search criteria if needed in order to filter down
if(comparePrices)
    query = query.Where(p => (double)p.Price >= priceFrom 
                          && (double)p.Price <= priceTo);

if(!string.IsNullOrEmpty(productSku))
{
    query = query.Where(t.sku == productSku);
}

等等。

每次您有条件地向原始查询添加过滤器时。

于 2012-06-20T13:22:30.067 回答
0

有人给了我精彩的答案:

var filters = new List<Func<f_results, bool>>();

if (comparePrices) filters.add((p => (double)p.Price >= priceFrom && (double)p.Price <= priceTo);
if (productQuery) filters.add(p => p.sku == productSku);

result = query.find (p => filters.All(filter => filter(p)));
于 2012-06-20T13:30:44.033 回答