С заданным списком объектов, например
public List<Event> itemList { get; set; }
Мне нравится запрашивать это
var newItemList = itemList
.Where(l => l.Published && l.PublishStart <= DateTime.Today)
.OrderBy(l => l.PublishStart)
.ToList();
Теперь мне нужно иметь возможность иметь несколько запросов и начать с выполнения
List<Event> newItemList;
if (EventType.Equals("consert"))
{
newItemList = itemList
.Where(l => l.Published && l.PublishType == EventType.Consert)
.OrderBy(l => l.PublishStart)
.ToList();
}
else if (EventType.Equals("last-chance"))
{
newItemList = itemList
.Where(l => l.Published)
.OrderBy(l => l.PublishEnd)
.ToList();
}
// and so on...
Обратите внимание, эти образцы упрощены / сокращены
Поскольку вышесказанное становится все длиннее и длиннее, и, чтобы немного упростить код, можно ли сохранить запрос в виде строки и / или сериализовать как Json и сделать что-то подобное?
var query_where = "l => l.Published && l.PublishType == EventType.Consert";
var query_orderby = "l => l.PublishStart";
newItemList = itemList
.Where(query_where)
.OrderBy(query_orderby)
.ToList();
Как уже упоминалось, я понимаю, что он не может быть безопасным с точки зрения типов, тем не менее, мне действительно нужно, чтобы он был упорядочен или сериализован тем или иным образом, поэтому его можно динамически добавлять в решение.