2011-09-28 17 views
2

テーブルがあり(Entity Modelを使用しています)、うまく動作しているLINQクエリを使用してそのテーブルをフィルタリングしました。 今、私は日付の配列に基づいてレコードをフィルタリングしたいと思います。私は事前に日付配列に基づくLINQクエリレコード

(lead.START_TIME IN (arrAppointmentDates)) 

おかげで次のあなたの助けをしたい日付

filteredList = leadsNewAndScheduled.Where(lead => 
       (LeadTypeIDs.Contains(lead.TYPE_ID.ToString()) || 
       LeadTypeIDs == string.Empty) && 
       (priorityIDs.Contains(lead.PRIORITY_ID.ToString()) || 
       priorityIDs == string.Empty) && 
       (((lead.EXPIRED_ON <= dateExpiry || 
       Convert.ToDateTime(lead.EXPIRED_ON) == DateTime.Today.Date) && 
       lead.STATUS_ID == (int)Enumerations.LeadStatus.New) || 
       lead.STATUS_ID == (int)Enumerations.LeadStatus.Active) && 
       (lead.START_TIME IN (arrAppointmentDates)) 
      ).ToList(); 

のアレイ上句で実装することはできませんよ。

答えて

1

日付のリストを宣言してLINQクエリにcontains句を適用しているときにこの問題を解決しました。

例:

//list of dates. 
List<DateTime> arrAppointmentDates; 

//change in query 
arrAppointmentDates.Contains(Convert.ToDateTime(lead.START_TIME).Date) 
2

使用Predicate Builder

しかしあなたはEntity Frameworkのを使用している場合は、AsExpandableを呼び出す必要がありますのでご注意ください

var predicate = PredicateBuilder.False<Lead>(); 

    foreach (DateTime date in dates) 
    { 
    DateTime temp = date; 
    predicate = predicate.Or (p => p.START_TIME == temp); 
    } 

    var result = query.Where(predicate).ToList(); // Don't call ToList() earlier 

を書く次に

var query = leadsNewAndScheduled.Where(lead => 
       (LeadTypeIDs.Contains(lead.TYPE_ID.ToString()) || 
       LeadTypeIDs == string.Empty) && .... 

のような日付条件なしでクエリを書きますそのように述語を適用する前に、エンティティセットの()を次のようにします。

return objectContext.Products.AsExpandable().Where (predicate); 
+0

ありがとうハサン、 私は自分の与えられたソースからクラスPredicateBuilderを作成し、次のコードに実装。 var predicate = PredicateBuilder.False (); foreach(arrAppointmentDatesのDateTime日付) { DateTime temp = date; predicate = predicate.Or(p => Convert.ToDateTime(p.START_TIME).Date == temp); } filteredList = filteredList.Where(述語).ToList(); これは私に次のエラーを与えます 'System.Collections.Generic.List 'に 'Where'の定義が含まれていません。 この中で助けを... – Kash

+0

System.Linq名前空間が含まれていますか? –

+0

はい私はSystem.Linqを含んでいます – Kash