2012-08-28 60 views
0

下午,我如何得到我的查詢比較價格?

如果價格匹配,我想返回bool。我回來了3個不同的價格,但我需要比較低價格和amzprice是否相同。如果他們是我還需要回...

pricematched = true 

下面是我當前的查詢。

var query = from a in dc.aProducts 
      join t in dc.tProducts on a.sku equals t.sku 
      join lp in dc.LowestPrices on a.asin equals lp.productAsin 
      orderby t.title 
      select new GetLowestPrices 
      { 
       productAsin = lp.productAsin, 
       sku = t.sku, 
       title = t.title, 
       oprice = Convert.ToString(t.tPrice), 
       lowprice = Convert.ToString(lp.price), 
       amzprice = Convert.ToString(lp.tAmzPrice), 
       lastupdated = Convert.ToDateTime(lp.priceDate) 
      }; 
      return query.ToList(); 

所有幫助將不勝感激,謝謝。

+0

您可以使用where語句來限制'where lp.price = lp.tAmzPrice'。這是必須用linq完成的原因嗎? – Matthew

+0

我在我的web服務和整個網站中使用Linq。我需要顯示所有結果,不僅限制他們,謝謝:) – thatuxguy

回答

0

如果你能布爾添加到現有的對象,它只是因素查詢象下面這樣:

var query = from a in dc.aProducts 
     join t in dc.tProducts on a.sku equals t.sku 
     join lp in dc.LowestPrices on a.asin equals lp.productAsin 
     orderby t.title 
     select new GetLowestPrices 
     { 
      productAsin = lp.productAsin, 
      sku = t.sku, 
      title = t.title, 
      oprice = Convert.ToString(t.tPrice), 
      lowprice = Convert.ToString(lp.price), 
      amzprice = Convert.ToString(lp.tAmzPrice), 
      lastupdated = Convert.ToDateTime(lp.priceDate), 
      pricematched = lp.tAmzPrice >= lp.price // This should do it 
     }; 
     return query.ToList(); 

否則你必須與輔助查詢做查詢外:

var matchedItems = query.Where(x => x.amzprice >= x.lowprice); 
0
select new GetLowestPrices 
     { 
      productAsin = lp.productAsin, 
      sku = t.sku, 
      title = t.title, 
      oprice = Convert.ToString(t.tPrice), 
      lowprice = Convert.ToString(lp.price), 
      amzprice = Convert.ToString(lp.tAmzPrice), 
      lastupdated = Convert.ToDateTime(lp.priceDate), 
      pricematched = lp.price == lp.tAmzPrice 
     }; 

順便說一句,爲什麼字符串的價格?另外:

return query.ToList(); 

如果你能逃脫的return query反而讓一個列表,然後執行。