使用列表中的 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值。
我需要做一个过滤器来请求包含在列表中的参数的数据。
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值。