gpt4 book ai didi

c# - 可重复使用的 LINQ 查询,where 子句除外

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:53 25 4
gpt4 key购买 nike

我有一组电影,它们具有各种属性(标题、发行年份、评级等),我需要使用 LINQ 查询来搜索这些属性,如下所示:

public BindingList<Movie> SearchByTitle(string title)
{
var matches = from movies in movieCollection
where movies.Title == title
select movies;
// do some other stuff with the matches
}

但我不希望使用单独的方法来搜索每个属性,因为搜索之间唯一发生变化的是 where 部分。例如 where movies.Rating == ratingwhere movies.ReleaseYear == releaseYear。如何通过将某种 ExpressionFunc 作为 where 部分传递,使搜索方法可重复用于所有不同类型的搜索?

最佳答案

How do I make the search method reusable for all different kinds of searches by passing in some sort of Expression or Func as the where section?

除了 where 子句,您的查询实际上不是任何东西。但是您可以轻松地使 where 部分可配置...只是不使用查询表达式。

public BindingList<Movie> SearchByTitle(Expression<Func<Movie, bool>> predicate)
{
var matches = movies.Where(predicate);

// Do common stuff with the matches.
}

编辑:我假设 movies是一个IQueryable<T> ,鉴于您正在谈论 Expression .如果它只是一个 IEnumerable<T> ,你想要:

public BindingList<Movie> SearchByTitle(Func<Movie, bool> predicate)
{
var matches = movies.Where(predicate);

// Do common stuff with the matches.
}

关于c# - 可重复使用的 LINQ 查询,where 子句除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212680/

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