2012-10-31 93 views
0

我正在實體框架工作,我創建了一個方法返回我的表的列表, 我檢索基於grpID的數據(這是外鍵,所以我可以有多個記錄) 我在一個數組保存這些GRPID的,所以我想在實體框架命令來運行,這樣我可以得到一個列表記錄,我如何申請在指揮,我的代碼如下在實體框架中的查詢

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; 
      } 
     } 

回答

1

您可能使用Contains模仿Select IN查詢

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

其中grpid是您的ID數組。

你可以考慮下面的例子。假設您的Product類具有兩個屬性ID和Name,並且ProductList的數組包含這些ID。 Select IN Query應該類似於:

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)); 
+0

感謝答覆,但我有多頭排列,所以我不能申請包含:( –

+0

你可以申請'Contains'用'long'數據類型:)它不僅僅是字符串。 – Habib

+0

是的,對不起,我沒有看到錯誤味精徹底:) –

0

使用IEnumerable.Contains與組ID數組。

List<tblResource> GetResources(long grpid) 
{ 
    try 
    {    
     return dataContext.tblResource.Where(c => grpIDArray.Contains(c.GroupId) 
     && c.IsActive == true).ToList();  
    } 
    catch (Exception ex) 
    {     
      return ex; 
    } 
} 
+0

謝謝你的回覆,但我有很長的陣列,所以我不能申請包含:( –

+0

你嘗試過嗎?,你也可以申請長期以及。 – Adil

0

......怎麼

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