Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按特定条件选项从所有存储库获取数据_C#_Asp.net Mvc - Fatal编程技术网

C# 按特定条件选项从所有存储库获取数据

C# 按特定条件选项从所有存储库获取数据,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个标签“今天”、“明天”、“不久”、“所有事件”(以及更多)。 每个选项卡都有一个标准(评级、名称、事件日期)、期间(今天、天、周、明天、两周)和顺序(升序或降序)。 我希望根据选项卡接收数据。 有以下几种方法: private List<IEvent> GetEventList(int tab) { var posterEvent = PosterEventRepository.GetById(tab); var criteria = Enum.Parse

我有一个标签“今天”、“明天”、“不久”、“所有事件”(以及更多)。
每个选项卡都有一个标准(评级、名称、事件日期)、期间(今天、天、周、明天、两周)和顺序(升序或降序)。
我希望根据选项卡接收数据。 有以下几种方法:

private List<IEvent> GetEventList(int tab)
{
    var posterEvent = PosterEventRepository.GetById(tab);

    var criteria =  Enum.Parse(typeof (PosterEventEnum.CriteriaEvent), posterEvent.Criteria);
    var period = Enum.Parse(typeof(PosterEventEnum.CriteriaEvent), posterEvent.Period);
    var order = Enum.Parse(typeof(PosterEventEnum.CriteriaEvent), posterEvent.Order);
}
谢谢。

您可以查看模式,但具体实现将因回购协议的内部结构而异

通常,您需要遍历所有存储库,并获取满足条件的所有项

switch(criteria) 
{ 
    case "Today": 
        var todaySpec=new TodaySpec();
        var result=repos.SelectMany(r=>r.GetRelevant(todaySpec)); 

   //then combine and sorting by rating 
} 

您可以使用注册表来注册每个条件选项和相应的存储库方法,而不是使用开关。 注册表可以是一个键-值对字典,该字典的键为选项名,值为委托方法列表。 大概是这样的:

Dictionary<string,Dictionary<string,Func<IEvent>> _registry;

_registry.Add("Today",new Dictionary<string,Func<IEvent>>{{"Film",FilmRepository.GetFilmsForToday},{"Sport",SportRepository.GetSportsForToday}};
Dictionary<string,Dictionary<string,Func<IEvent>> _registry;

_registry.Add("Today",new Dictionary<string,Func<IEvent>>{{"Film",FilmRepository.GetFilmsForToday},{"Sport",SportRepository.GetSportsForToday}};
var methods=_registry[criteria];
resultFilm=methods["Film"]();
resultSport=methods["Sport"]();