2011-01-20 5 views
0

私はlinqが新しくクエリを作成するのに苦労しています。テーブルは「顧客」テーブルと「受注」テーブルで、1対多の関係になっています。注文日に基づくLinqクエリの質問

私は顧客のリストを返信したいと考えています。

enum CustomerStatus 
{ 
    one, 
    two, 
    three 
} 

public List<Customer> GetCustomerByStatus(enum customerStatus) 
{ 
    ... 
} 

私はGetCustomerBystatus(one)として上記の関数を呼び出す場合ので、私は、最新の順序今日注文日<を持っている 顧客のリストが欲しいです。

私が上記の関数をGetCustomerBystatus(two)と呼んだ場合、最も最近の注文の注文日が今日の の顧客のリストが必要です。

上記の機能をGetCustomerBystatus(one)とすると、最も最近の注文の注文日が今日よりも大きい の顧客のリストが必要です。

linq文を書くにはどうすればよいですか?

私はそれが理にかなっていると思います。ありがとうございました。

+0

誰もがそのようにはあまり明確で、それをコーディングする理由私は本当にここで問題が表示されていない... – cjk

+0

@ckは、質問は、私には明らかです。 – fearofawhackplanet

+0

@fear:編集の前に実際の質問が追加されました。その前には1つもありません... – cjk

答えて

1

イアンが正しいです。ここにサンプルがあります。

public List<Customer> GetCustomerByStatus(CustomerStatus customerStatus) 
    { 
     var query = from customer in this.Customers 
         select customer; 

     switch (customerStatus) 
     { 
      case CustomerStatus.one: 
       query = query.Where(customer => customer...); 
       break; 
      case CustomerStatus.two: 
       query = query.Where(customer => customer...); 
       break; 
      case CustomerStatus.three: 
       query = query.Where(customer => customer...); 
       break; 
     } 

     return query.ToList(); 
    } 
+0

私はこれを試しましたが、私はそれを正しく行ったとは思いません:customers = db.Customers.Where(c => c.Orders.OrderBy(o => o.Orderdate> DateTime.Now.Date))。 ToList(); – scouserider

+0

エラーが発生しましたか、結果が正しくありませんか? –

2

通常どおり、フィルタリングを行わずにクエリを作成します。

次に、スイッチブロックで、どのenum値がメソッドに渡されるかに基づいて異なるwhere節を適用できます。

+1

また、リストを返すので、スイッチの後に** ToList()を呼び出す必要があります**クエリが完全に構成されているときにブロックします。 –

+0

linqクエリを作成する最も良い方法は何ですか? – scouserider

関連する問題