“失去”;“订购”;在使用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-请将此示例视为一个假设表示。假设有一个“好”的理由..这就是我自己解决问题的方式,这是主题专家不断更改/添加需求的情况之一,因此查询不断增长和更改。。我只是想知道,当列表/任何内容发生更改时,结果集是否会丢失所有排序属性。。