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

您可以使用 Contains 来模仿Select IN查询之类的内容

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

grpid您的 ID 数组在哪里。

您可以考虑以下示例。假设您有具有两个属性 ID 和 Name 的 Product 类,以及包含 ID 的 ProductList 数组。Select IN 查询应该类似于:

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

怎么样...

dataContext.tblResource.Where(c=> gripid.Any(GroupId) 
                                && c.IsActive == true).ToList();
于 2012-10-31T10:53:06.153 回答
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;
     }
 }
于 2012-10-31T10:51:58.463 回答