В зависимости от некоего условия нужно составить lambda expression. Как сделать проще, чтобы код был изящнее.
В примере, в зависимости от наличия значения в UserId используются разные лябда-выражения для фильтра запроса:
public CatalogModel GetListCatalogModels(int? userId)
{
Expression<Func<Catalog, bool>> filter1 = x => x.IsPublished;
Expression<Func<Catalog, bool>> filter2 = x => x.UserPtr == userId && x.IsPublished;
Expression<Func<Catalog, bool>> filter;
if (userId == null)
filter = filter1;
else
filter = filter2;
...
Не очень силен в лямбда-синтаксисте, но полагаю, что это может быть изящнее...