2009-07-21 27 views
2

で次の操作を実行する方法を、どのように私は(:)#下さいC)LINQでこれを実装するのです私は、次のSQLを持ってLINQ

SELECT  a.Category, a.Description, a.Item, a.[Value], a.Loading, a.MaxDiscount, MIN(b.EffectiveDate) AS FromDate, a.EffectiveDate AS EndDate, a.SortOrder, a.ID 
FROM List a 
LEFT OUTER JOIN List b ON a.[Value] = b.[Value] AND a.Category = b.Category AND a.Description = b.Description AND a.Item = b.Item AND a.EffectiveDate < b.EffectiveDate 
GROUP BY a.Category, a.Description, a.Item, a.[Value], a.Loading, a.MaxDiscount, a.SortOrder, a.EffectiveDate, a.ID 
HAVING  (a.Category = 'General') AND (a.Description = 'Cover') AND (a.EffectiveDate <= CONVERT(DATETIME, '2009-04-01 00:00:00', 102)) AND (MIN(b.EffectiveDate) >= CONVERT(DATETIME, '2009-04-01 00:00:00', 102) OR MIN(b.EffectiveDate) IS NULL) AND (a.Item = 'Type') 
ORDER BY a.SortOrder 

私は

var query = from a in List.All() join b in List.All() 
      on new {a.Value,a.Category ,a.Description,a.Item} 
      equals new {b.Value,b.Category ,b.Description,b.Item} into temp 
(亜音速のLINQを使用して)次ています

私はどのように私はあなたのクエリのSP(ストアドプロシージャ)を作成することをお勧めします

+6

少なくとも、私たちはあなたがこれまでに得たものを見せてください。さもなければ、私たちはあなたのためにすべての仕事をしてしまい、何も学ばれません。 – leppie

+1

私は以下を持っています(SubSonic Linqを使用しています) var query = from a List.All() List.All()にある にbを結合する新しい{a.Value、a.Category、a.Description、a。アイテム} は新しく{b.Value、b.Category、b.Description、b.Item}と等しくなります a.EffectiveDate Podge

答えて

0

はこちら

クリック:)できるだけ簡単です。 あなたが参加していない場合、面白いon句を持つ必要はありません。

あなたがしたいのは、フィルタリングだけです。あなたがする必要があるのは、「どこに」です。

someDate = new DateTime(2009, 4, 1); 

var query = 
from a in List 
where a.Category == "General" 
where a.Description == "Cover" 
where a.Item == "Type" 
where a.EffectiveDate < someDate 
let minDate = 
(
    from b in List 
    where a.Value == b.Value 
    where a.Category == b.Category 
    where a.Description == b.Description 
    where a.Item == b.Item 
    where a.EffectiveDate < b.EffectiveDate 
    orderby b.EffectiveDate 
    select new DateTime? (b.EffectiveDate) 
).FirstOrDefault() 
where !minDate.HasValue || someDate < minDate.Value 
orderby a.SortOrder 
select a; 
+0

句は '面白い'です。 –

+0

http://dilbertblog.typepad.com/the_dilbert_blog/2007/07/subjective-humo.html –

-1

現時点でa.EffectiveDate < b.EffectiveDateを追加するには考えていると含まれていることをあなたができることとDBMLファイル内のSP、アクセスする/ DataContextオブジェクトからメソッドとして呼び出します。人間が理解するために、すべてのコードされた後、維持

は、あなたが参加していない場合は、再編成する必要はありません以上の"How to call Stored procedure in LINQ"

関連する問題