2012-08-30 49 views
1

下午,为什么我的查询不返回不同的行?

我想从我的SQL Server 2008 R2数据库返回产品列表,但我只想返回结果的最新日期。

但是,下面的代码似乎会返回所有项目,即使是具有较旧日期的项目。我怎么去得到我的结果只有最新的日期。

var query = (from a in dc.aboProducts 
      join t in dc.twProducts on a.sku equals t.sku 
      join lp in dc.LowestPrices on a.asin equals lp.productAsin 
      select new GetLowestPrices 
      { 
      productAsin = lp.productAsin, 
      sku = t.sku, 
      title = t.title, 
      twprice = Convert.ToString(t.twPrice), 
      lowprice = Convert.ToString(lp.price), 
      amzprice = Convert.ToString(lp.tweAmzPrice), 
      lastupdated = Convert.ToDateTime(lp.priceDate) 
      }).Distinct().OrderBy(ti => ti.title); 
return query.ToList(); 

回答

0

尝试这样:

var query = 
    from a in dc.aboProducts 
    join t in dc.twProducts on a.sku equals t.sku 
    join lp in dc.LowestPrices on a.asin equals lp.productAsin 
    select new GetLowestPrices 
    { 
     productAsin = lp.productAsin, 
     sku = t.sku, 
     title = t.title, 
     twprice = Convert.ToString(t.twPrice), 
     lowprice = Convert.ToString(lp.price), 
     amzprice = Convert.ToString(lp.tweAmzPrice), 
     lastupdated = Convert.ToDateTime(lp.priceDate) 
    }; 

var lookup = 
    query 
     .ToLookup(x => x.sku) 
     .Select(x => x.OrderByDescending(y => y.lastupdated).First()) 
     .OrderBy(x => x.title); 

return lookup.ToList(); 
+0

伟大似乎工作,我没有编辑它。将相应地更新你的帖子。我用'return lookup.ToList();'而不是'return query.ToList();' – thatuxguy

+0

啊,我的错。感谢@thatuxguy为我修复它。 – Enigmativity

0

,因为DISTINCT没有应用现有的列表上,而是建立一个新的,和你需要得到一个新的名单上:

val DistinctList = ExistingList.Distinct().ToList(); 
相关问题