2009-08-24 19 views
1

は、私は今、私はすぐに期限切れとなる製品のリストを取得したいこのLINQ to SQLのクエリをどのように作成できますか?

Table Product 

ProductId - int <PK> 
ProductExpiry - TimeDate 
AlertOfExpiry - int 
ProductTypeId - int<Fk> 

Table ProductType 
ProudctTypeId - int <PK> 
Name - varchar(50) 

のような2つのテーブルを持っています。だから私がしようとしているのは

今日の今日の日付は8月24日で、製品の有効期限は28日で、4日間の有効期限が設定されています。

So 28 - 4 = 24 (show in list on 24th) 

また、「名前」をProductTypeTableの出力に含めることもできます。

これはこれまで私が行ってきたことです。それはまだ散らかっているのでaddDaysに - ()

var grab = dbContext.Product.Where(u => u.ProductExpiry.addDays(Convert.ToDouble(u.AlertOfExpiry)) >= DateTime.Now) 

だから最初に私がマイナスを取得する方法を確認していません。

私はそこから行って見つかった結果を見て、ProductTypeに行き、名前を取得する方法を知りません。

私はどこの部分が(grab.ProducttypeId == grab.ProductTypeid)のようになると思います。何とか名前をつかんでください。

だから誰でも私を助けることができます。また、私はそれを少しクリーナーにすることができますか?私はこれをテストしていません:

var grab = dbContext.Product 
.Where(u => (u.ProductExpiry.Month == DateTime.Now.Month) && 
    (u.ProductExpiry.Day <= (DateTime.Now.Day + 4))) 

このような何かがあなたの製品の種類

foreach(Product prod in grab) 
{ 
    var grabProductType = dbContext.ProductType 
     .Where(pt => pt.ProductTypeId == prod.ProductTypeId); 
} 

注意のために働く必要があります。このような何かについてどう

答えて

1

+0

私はそれを試しますが、後でproductTypeIdを取得する方法はありますか? – chobo2

+0

ジョインがトリックを行うときに、2回反復する必要はありません。 – jeremyalan

+0

@ Ph0enix-ありがとう、まだLINQを学んでいます。私は主に非常に簡単な表現をしました –

1

phsrの答えは 私たちの新しいクエリが、私はLINQ to SQLはと私のアプリケーションでも似たようなやっている

var grab = dbContext.Product 
.Where(u => (u.ProductExpiry <= DateTime.Now.AddDays(4))) 
0

だろう...月のチェックを回避さらに短縮することができます。私が使用

1その:

var grab = dbContext.Product.Where(u => u.ProductExpiry. >= DateTime.Today.AddDays(4) 
1

私はC#で流暢だけど、ないASP.NET、その矛盾がある場合、私はお詫び申し上げます。うまくいけば、少なくともそれの要点を得ることができます。

var query = 
    from Product p in db.Products 
     join ProductType pt in db.ProductTypes 
     on p.ProductTypeId equals pt.ProductTypeId 
    where (DateTime.Now 
     .AddDays (p.AlertExpiry) 
     .CompareTo (p.ProductExpiry) > 0) 
    select new {Product = p, ProductType = pt}; 

foreach(var item in query) 
{ 
    // Now, you can use the following for each product: 
    // item.Product 
    // item.ProductType 
} 
関連する問題