首页 > 解决方案 > 重构类似的 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);
    }

标签: c#asp.netlinq

解决方案


您可以引入一个名为的新参数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,如果只是这两种方法,以这点小代码为主体,不太值得重构。


推荐阅读