使用列表中的 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));

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

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

但根据 socios 的类型,确切的语法可能会有所不同。

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

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

当然如果你可以直接比较对象的话,.Contains()也足够了,只要你记得使用return值。