2016-08-10 22 views
0

私は以下のフォーマットで書かれたlinqクエリを持っています。今私はconsumerIDを渡しているときにうまく動作し、where句に入れることができます。しかし、私がconsumerIdsのリストを渡そうとすると、これをwhere節にどのように入れることができますか?私はいくつかのソリューションをオンラインで見ていると彼らは私が使いたくない他のlinq形式を使用しています。 where節にリストを持たせることができればsuggesestしてください。これはsqlの節でどのようにできるのでしょうか?ここでwhere句のリストを含むlinqクエリ

public ICollection<ConsumerExchangeChangeDto> GetByConsumers(List<int> consumerIDs) 
{ 
    EnrollmentReportingModel db = (EnrollmentReportingModel)Context.DbContext; 
    var results = (from ecew in db.A 
     join ecewe in db.B on ecew.ID 
     equals ecewe.ExchangeChangeEnrollmentWindowID into temp 
     from j in temp.DefaultIfEmpty() 
     join cecr in db.C on ecew.ConsumerExchangeChangeRequestID equals cecr.ID 
     join con in db.D on cecr.ConsumerID equals con.ID 
     where con.ID.Contains(consumerIDs) && !ecew.Deleted 
     select new E 
     { 
      ConsumerID = con.ID, 
      OrganizationID = con.OrganizationID, 
      StartDate = ecew.StartDate, 
      EndDate = ecew.EndDate, 
      Deleted = ecew.Deleted 
     }).ToList(); 
    return results; 
} 

はDTOクラスです

public class E : ILzDto 
{ 
    public int ConsumerID { get; set; } 
    public int OrganizationID { get; set; } 
    public DateTime? StartDate { get; set; } 
    public DateTime? EndDate { get; set; } 
    public bool Deleted { get; set; } 
} 

答えて

1

変更この:これに

where con.ID.Contains(consumerIDs) 

where consumerIDs.Contains(con.ID) 

内のアイテムのID場合、これはチェックしますselect文が入力リストにあります。

+0

その応答に感謝します。あなたが私の関数定義をpublic ICollectionに変更するかどうかを提案できますか? GetByConsumers(int [] consumerIDs) –

+0

@kushalbholaあなたが何を意味するのか分かりません。なぜリストではなく配列を渡したいのですか? – ChrisF

+0

外部APIからこれらのIDを取得していますが、これをリストに変換して処理することができますが、機能定義を変更できるのはなぜですか? –