2016-03-02 56 views
1
  var flowers = from f in c.Product 
           select new 
           { 
            f.ProductID, 
            f.Price, 
            f.Name, 
            f.Description 
           }; 
       List<int> IDsToRemove = new List<int>(); 

       foreach(var newRow in flowers) 
       { 
        if (((List<int>)Session["UsedIDs"]).Contains(newRow.ProductID)) 
        { 
         IDsToRemove.Add(newRow.ProductID); 
        } 
       } 

我已经得到了ID的,我想删除那里是usedIDs并从查询中productIDs之间的匹配删除项目,所以我把所有的匹配到整数IDToRemove的列表。现在我不知道该怎么做:如何从IQueryable的匿名类型

 foreach(var id in IDsToRemove){ 
     flowers.remove(id) } 

    ddlFlowers.DataSource = flowers.ToList(); 
+0

删除项目的相反,你可以do'ddlFlowers.DataSource = flowers.Except(IDS ();' – shahkalpesh

+0

@caleb我编辑了我的答案 –

+0

或者,'flowers.RemoveAll(f => ids.Contains(f));'将移除这些项目。 – shahkalpesh

回答

2

你可以做这样的事情:

var listInSession = (List<int>)Session["UsedIDs"]); 
ddlFlowers.DataSource = flowers.Where(f => !listInSession.Contains(f.ProductID)).ToList();