Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“失去”;“订购”;在使用LINQ添加.RemoveAll()到实体(3.5)之后?_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

“失去”;“订购”;在使用LINQ添加.RemoveAll()到实体(3.5)之后?

“失去”;“订购”;在使用LINQ添加.RemoveAll()到实体(3.5)之后?,linq,entity-framework,linq-to-entities,Linq,Entity Framework,Linq To Entities,在我对结果集进行了一些修改之后,我似乎需要对其进行“重新排序”,这是“一个特性”吗?如果是,有什么启示吗?我错过什么了吗 //need the "IN" type functionality to limit my initial set. var resultSet = from t in someContext.SomeEntities .Where("it.some_id IN{" + string.Join(",", array) + "}

在我对结果集进行了一些修改之后,我似乎需要对其进行“重新排序”,这是“一个特性”吗?如果是,有什么启示吗?我错过什么了吗

//need the "IN" type functionality to limit my initial set.
 var resultSet = from t in someContext.SomeEntities
                       .Where("it.some_id IN{" + string.Join(",", array) + "}")
                              where t.obj_id == objtId
                              orderby t.tInt
                              select new customObj
                              {
                                  prop1= t.t1,
                                  prop2 = t.tInt,
                                  prop3 = t.tInt2 
                              };

//Do some other lookups / decision branching and 
//determine that i need to remove the following:

//just for arguments sake
resultSet.ToList().RemoveAll(o => o.prop1== 8 
                    && o.prop1 == 5 
                    && o.prop1 == 11 
                    && o.prop1 == 21); 


foreach (var vals in resultSet)
{
//do something that depends on the order
}
在那之后。。我所期望的事情,不是。。当我对结果集执行另一个orderby时,如:

foreach (var vals in resultSet.OrderBy(o => o.tInt))
{
   //now the order's okay
}
那就是我最初的期望

所以,在我筛选出结果集之前,我是否应该不进行任何排序?在这种情况下,显然我可以对初始查询进行一些过滤,但在我的情况下,我真的不能

…先谢谢你

更新:

我一定是为了(.RemoveAll())在上面做了一个.ToList(),那是罪魁祸首吗


我认为您应该删除初始的
orderby t.tInt
,并在使用您的行筛选完列表后执行order by:

resultSet.ToList().RemoveAll(o => o.prop1== 8 
                    && o.prop1 == 5 
                    && o.prop1 == 11 
                    && o.prop1 == 21);
我从未听说过
RemoveAll()
更改顺序,但这是很有可能的。无论哪种方式,从长远来看,对较少的记录进行排序都会更有效。我几乎总是在过滤完东西后进行排序


希望这有帮助。

IEnumerable
IQueryable
上没有
RemoveAll()方法。它到底是从哪里来的?声明它的类型是什么?为什么要删除这些项,而不是通过另一个where条件直接将它们从查询中排除?@Ladislav-请将此示例视为一个假设表示。假设有一个“好”的理由..这就是我自己解决问题的方式,这是主题专家不断更改/添加需求的情况之一,因此查询不断增长和更改。。我只是想知道,当列表/任何内容发生更改时,结果集是否会丢失所有排序属性。。