过滤2表中的数据

时间:2015-03-30 12:02:44

标签: linq sql-server-2008 asp.net-mvc-4

这里我有2个查询变量用于显示不同类型的数据,但我想从第一个查询中提取特定数据,这在第二个查询中没有引用 我有以下代码,但它无法正常工作as.first查询变量用于连接4表,如A,B,C,D和第二个查询变量连接表A和B.Here我想从First变量和它在第二个表中没有任何引用

 public List<ProductEntityList> GetProductListRegister()
 {
     var ProductList1 = new List<ProductEntityList>();
     var ProductList = new List<ProductEntityList>();
     var finalList = new List<ProductEntityList>();

     try
     {
         using (HabitGreen01Entities ob = new HabitGreen01Entities())
         {
             var list1 = from ctr in ob.TblCreateUsers
                         join shp in ob.TblShopMasters
                         on ctr.id equals shp.Fk_CreateUser_Id
                         join prd in ob.TblProductMaster01
                         on shp.id equals prd.FK_ShopMaster_Id    
                         select new ProductEntityList
                         {
                             Id = prd.id,
                             Name = prd.Name,
                             ShopName = shp.Name,
                             UserName = ctr.Name
                         };

             ProductList1 = list1.ToList();

             var temp = from pd in ob.TblProductMaster01
                        join cr in ob.TblAccountSettings
                        on pd.id equals cr.f_productmaster01Id
                        select new ProductEntityList
                        {
                            Id = (int)cr.f_productmaster01Id,
                            Name=pd.Name                                      
                        };

              ProductList = temp.ToList();

              var temp1 = from item in ProductList1
                          where !ProductList.Contains(x=>item.Id)
                          select new ProductEntityList
                          {
                              Id = item.Id,
                              Name = item.Name,
                              ShopName = item.ShopName,
                              UserName = item.UserName
                          };

              finalList = temp1.ToList();

              // var temp1= ProductList1.Select(f=>f.Id).Intersect(ProductList.Select(b=>b.Id));    
              //finalList = matches.ToList();
          }
      }
      catch (Exception e)
      {
          throw e;
      }

      return (finalList);
  }

2 个答案:

答案 0 :(得分:1)

试试这个:

var temp1 = from item in ProductList1
                          where !ProductList.Select(c=>c.Id).Contains(item.Id)
                          select new ProductEntityList
                          {
                              Id = item.Id,
                              Name = item.Name,
                              ShopName = item.ShopName,
                              UserName = item.UserName
                          };

你可以直接写:

var finalList = (from item in ProductList1
                          where !ProductList.Select(c=>c.Id).Contains(item.Id)
                          select new ProductEntityList
                          {
                              Id = item.Id,
                              Name = item.Name,
                              ShopName = item.ShopName,
                              UserName = item.UserName
                          }).ToList();

答案 1 :(得分:0)

var result = ProductList1.Where(p => !ProductList.Any(p2 => p2.Id== p.Id));
 finalList = result.ToList();