c# - 重构类似的 Linq 查询
问题描述
重构这些方法有什么意义吗?怎么做?
public IEnumerable<Game> GetGamesByGenre(string genre)
{
return Games.Where(x => x.SubGenre.Genre.GenreName == genre);
}
public IEnumerable<Game> GetGamesBySubGenre(string subGenre)
{
return Games.Where(x => x.SubGenre.SubGenreName == subGenre);
}
解决方案
您可以引入一个名为的新参数propertySelector
:
public IEnumerable<Game> GetGamesBy(Func<Game, string> propertySelector, string genre)
{
return Games.Where(x => propertySelector(x) == genre);
}
您分别调用这样的原始方法:
GetGamesBy(x => x.SubGenre.Genre.GenreName, someGenreName)
GetGamesBy(x => x.SubGenre.SubGenreName, someSubGenreName)
但是IMO,如果只是这两种方法,以这点小代码为主体,不太值得重构。
推荐阅读
- python - 似乎无法从flask api(使用jsonify)读取react js(axios)中的错误消息
- python - 使用 PIL 和 numpy 加载和保存图像
- asp.net - ASP.net MVC 表排序器具有可单击的列标题但不排序
- node.js - 如何从标头获取正确的授权值以传递给 jwt 方法?
- python-3.x - 在 Python 中重采样
- python - 如何解决这个关键错误?
- php - php getter 函数可以作用于类的所有成员吗?
- mysql - Innodb mysql 5.7 集群重启后不会加入
- c++ - 在 C++ 中初始化构造函数内的字符数组(数组索引超出范围)
- php - 我的 mysql.sql 文件已损坏,我无法将其导入 Xampp