2017-07-08 9 views
0

私はカテゴリとサブカテゴリの助けを借りていくつかの質問を選択したい2つのテーブルcategoryとsubCategoryを持つオンラインテストアプリケーションを開発しています。 (1)とsubcategoryIDでカテゴリIDは、(1,2,3,4)linq式のIn句

に私は、クエリで

int[] subCategoryForQuestions=new int[]{1,2,3,4}; 

var TestDataList = coreDbContext.SolutionMasters 
         .Where(x => x.CategoryID == categoryID 
            && x.DifficultyId == questionLevel 
            && subCategoryForQuestions.Contains("here all value in Subcategory")) 
         .Take(NoOfQuestions); 

か何かなどを渡すために起こっているサブカテゴリのリストを取得しています質問(のようなものsubcategoryID.contains("some value in array of integer")

は、私は誰からいくつかの助けを得ることができますか?

+0

[Linq to Entities - SQL "IN"句](https://stackoverflow.com/questions/857973/linq-to-entities-sql-in-clause)の可能な複製 – mjwills

答えて

3

あなたがhttps://blogs.msdn.microsoft.com/alexj/2009/03/25/tip-8-how-to-write-where-in-style-queries-using-linq-to-entities/Linq to Entities - SQL "IN" clauseごとにContainsを使用することができます。

int[] subCategoryForQuestions=new int[]{1,2,3,4}; 

var TestDataList = coreDbContext.SolutionMasters 
         .Where(x => x.CategoryID == categoryID 
            && x.DifficultyId == questionLevel 
            && subCategoryForQuestions.Contains(x.subcategoryID)) 
         .Take(NoOfQuestions); 

これは、舞台裏でINという文を生成します。アレイが比較的小さく、SQL Server parameter limitを使い果たしないようにする必要があります。