gpt4 book ai didi

c# - 如何通过 Func 列表枚举来过滤集合

转载 作者:行者123 更新时间:2023-11-30 19:44:35 24 4
gpt4 key购买 nike

我正在尝试通过 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com