【发布时间】:2013-06-24 03:52:24
【问题描述】:
我需要构建的查询是这样的:
query = query.Where(s =>
(
(s.Title.Contains(title1) && s.EpisodeTitle.Contains(episodeTitle1))
||
(s.Title.Contains(title2) && s.EpisodeTitle.Contains(episodeTitle2)))
);
唯一的问题是,s.Title 和 s.EpisodeTitle 是动态的。
表示以下变量可能是查询的一部分:
(string title1 = null,
string title2 = null,
string episodeTitle1 = null,
string episodeTitle2 = null,
string genre = null,
string directorName = null,
string releaseYear = null,
string seasonEpisode = null,
string showTypeDescription = null)
例如
query = query.Where(s =>
(
(s.DirectorName.Contains(directorName) && s.ShowTypeDescription.Contains(ShowTypeDescription))
||
(s.releaseYear.Contains(releaseYear) && s.genre.Contains(genre)))
);
任何类型的组合。
我怎样才能构造这个查询而不必考虑这里的每一种可能性?
【问题讨论】:
-
尝试阅读
PredicateBuilder和LINQKit。这可能是一个不错的起点:How does PredicateBuilder work
标签: c# linq-to-entities dynamic-programming