繁体   English   中英

使用列表中的ID过滤linq <int>

[英]Filter in linq with ID's in a List<int>

我需要做一个过滤器,使用列表中包含的参数来请求数据。

if (filter.Sc.Count > 0)
    socios.Where(s => filter.Sc.Contains(s.ScID));

我尝试这种方式,但这不起作用,我也试过......

socios.Where( s => filter.Sc.All(f => f == s.ScID));

我怎么能这样做过滤器?

socios.Where(s => filter.Sc.Contains(s.ScID));

返回已过滤的查询。 它不会修改查询。 您忽略了返回的值。 你需要这样的东西:

socios = socios.Where(s => filter.Sc.Contains(s.ScID));

但根据类型socios确切的语法可以是不同的。

除了需要使用LINQ .Where()的返回值之外,您的第二个语句中还存在潜在的逻辑错误。 .Contains()的等效逻辑是检查任何元素是否通过了匹配条件。 在你的情况下,第二个声明是

var filteredSocios = socios.Where( s => filter.Sc.Any(f => f == s.ScID));

当然,如果你可以直接比较object-to-object,只要你记得使用返回值, .Contains()仍然是足够的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM