im尝试使用linqCore从查询结果中删除一些项目,但未删除它们 代码和结果
<a href="#"> The Dog Barks </a>
<a href="#"> The Duck Quacks </a>
<a href="#"> The Bird Chirps </a>
答案 0 :(得分:1)
您的代码有几个问题。
首先,SkipWhile
/ TakeWhile
对于无序序列毫无用处,无序序列通常是EF查询的结果,除了它们包含显式OrderBy
。标准且更合适的过滤方法是Where
。
第二,a.Id.Equals(postOn)
解析为object.Equals
,并且由于a.Id
是int
,而postOn
是IQueryable<int>
,因此它总是求值为{{ 1}}。
您真正需要的是基于false
的附加Where
条件。可以是当前!Contains
的{{1}},也可以是单独的&&
(这些构造以相同的方式处理):
Where
另一个好处是过滤将在服务器端进行。
答案 1 :(得分:1)
SkipWhile
仅会跳过IEnumerable<T>.
开头的项目。一旦不满足该条件,它将很乐意使用其余元素。以后不会与之匹配的其他元素将不会被跳过。
您可以使用SkipWhile
Except
var result = QueryResult.Except(a => a.Id.Equals(Id here));