从结果中删除一些项目(Id)

时间:2018-08-29 07:04:14

标签: c# linq entity-framework-core

im尝试使用linqCore从查询结果中删除一些项目,但未删除它们 代码和结果

<a href="#"> The Dog Barks </a>
<a href="#"> The Duck Quacks </a>
<a href="#"> The Bird Chirps </a>

2 个答案:

答案 0 :(得分:1)

您的代码有几个问题。

首先,SkipWhile / TakeWhile对于无序序列毫无用处,无序序列通常是EF查询的结果,除了它们包含显式OrderBy。标准且更合适的过滤方法是Where

第二,a.Id.Equals(postOn)解析为object.Equals,并且由于a.Idint,而postOnIQueryable<int>,因此它总是求值为{{ 1}}。

您真正需要的是基于false的附加Where条件。可以是当前!Contains的{​​{1}},也可以是单独的&&(这些构造以相同的方式处理):

Where

另一个好处是过滤将在服务器端进行。

答案 1 :(得分:1)

SkipWhile仅会跳过IEnumerable<T>.开头的项目。一旦不满足该条件,它将很乐意使用其余元素。以后不会与之匹配的其他元素将不会被跳过。 您可以使用SkipWhile

来代替Except
var result = QueryResult.Except(a => a.Id.Equals(Id here));