0

私はエンティティフレームワークに取り組んでいます、テーブルのリストを返すメソッドを作成しました、grpID(外部キーであるため、複数のレコードを持つことができます)に基づいてデータを取得していますこれらのgrpIDを配列に保存しましたエンティティフレームワークでINコマンドを実行して、単一のリストでレコードを取得できるようにします。Inコマンドを適用するには、コードを以下に示します。

 public List<tblResource> GetResources(long[] grpid)
        {
            try
            {               
                return dataContext.tblResource.Where(c => c.GroupId == grpid && c.IsActive == true).ToList();//This code is not working as i am having array of groupIds

            }
            catch (Exception ex)
            {                
                return ex;
            }
        }
4

3 に答える 3

1

Select INクエリのようなものを模倣するためにContainsを使用できます

dataContext.tblResource.Where(c=> gripid.Contains(c.GroupId) 
                                  && c.IsActive == true)
                       .ToList();

grpidIDの配列はどこにありますか。

次の例を検討してください。2つのプロパティIDとNameを持つProductクラスと、IDを含むProductListの配列があるとします。SelectINQueryは次のようになります。

int[] productList = new int[] { 1, 2, 3, 4 };
List<Product> products = new List<Product>();
products.Add(new Product { ID = 1, Name = "Test" });
products.Add(new Product { ID = 2, Name = "Test" });
products.Add(new Product { ID = 6, Name = "Test" });
var myProducts = from p in products
                 where productList.Contains(p.ID)
                 select p;
var methodChainingQuery = products.Where(c => productList.Contains(c.ID));
于 2012-10-31T10:50:16.670 に答える
0

グループID配列でIEnumerable.Containsを使用します。

List<tblResource> GetResources(long grpid)
{
     try
     {               
         return dataContext.tblResource.Where(c => grpIDArray.Contains(c.GroupId)
         && c.IsActive == true).ToList();    
     }
     catch (Exception ex)
     {                
          return ex;
     }
 }
于 2012-10-31T10:51:58.463 に答える
0

どうですか...

dataContext.tblResource.Where(c=> gripid.Any(GroupId) 
                                && c.IsActive == true).ToList();
于 2012-10-31T10:53:06.153 に答える