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 に答える