作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 List<Func<InstagramUser,bool>>
进行枚举,但未成功过滤 List<InstagramUser>
的集合.当 display()
时,我的代码编译,但只返回整个列表,未经过滤。被调用。
我的问题是,保存可用于过滤另一个集合的 lambda 表达式集合的正确方法是什么?
public class InstagramDisplay {
public IList<InstagramUser> instagramUsers;
public IList<Func<InstagramUser, bool>> instagramFilters;
public InstagramDisplay() {
instagramUsers = new List<InstagramUser>();
instagramFilters = new List<Func<InstagramUser, bool>>();
}
public void addFilter(Func<InstagramUser, bool> filter, object filterValue) {
if ((int)(filterValue ?? 0) > 0)
instagramFilters.Add(filter);
}
public IEnumerable<InstagramUser> display() { //filter not working
instagramFilters.ToList().ForEach(filter => instagramUsers.Where(filter));
return instagramUsers;
}
}
调用 - 只返回未过滤的完整集合:
InstagramDisplay instagramDisplay = new InstagramDisplay();
instagramDisplay.instagramUsers = (List<InstagramUser>)context.Cache[CACHE_KEY];
instagramDisplay.addFilter(u => u.id == instagramId, instagramId);
context.Response.Write(javascriptSerializer.Serialize(instagramDisplay.display());
最佳答案
如果您想要包含匹配所有过滤器的用户(AND
比较):
instagramUsers.Where(u => instagramFilters.All(f => f(u)));
如果您想包含匹配 1 个或多个过滤器的用户,请将上面语句中的 All
更改为 Any
。
关于c# - 如何通过 Func<TSource,TResult> 列表枚举来过滤集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12114897/
我是一名优秀的程序员,十分优秀!