Вы можете использовать пустой оператор coalesce ??
и фильтровать по x.IsPublished == (v ?? x.IsPublished)
public class A
{
public int Id { get; set; }
public Nullable<bool> IsPublished { get; set; }
}
public static IEnumerable<A> Filter(IEnumerable<A> items, Nullable<bool> v)
{
return items.Where(x => x.IsPublished == (v ?? x.IsPublished)).ToList();
}
var listy = new List<A>();
listy.Add(new A() { Id=1, IsPublished=null });
listy.Add(new A() { Id=2, IsPublished=true });
listy.Add(new A() { Id=3, IsPublished=false });
listy.Add(new A() { Id=4, IsPublished=null });
listy.Add(new A() { Id=5, IsPublished=true });
listy.Add(new A() { Id=6, IsPublished=false });
Демонстрация интерактивной консоли C #:
> Filter(listy, null)
List<Submission#0.A>(6) { Submission#0.A { Id=1, IsPublished=null }, Submission#0.A { Id=2, IsPublished=true }, Submission#0.A { Id=3, IsPublished=false }, Submission#0.A { Id=4, IsPublished=null }, Submission#0.A { Id=5, IsPublished=true }, Submission#0.A { Id=6, IsPublished=false } }
> Filter(listy, true)
List<Submission#0.A>(2) { Submission#0.A { Id=2, IsPublished=true }, Submission#0.A { Id=5, IsPublished=true } }
> Filter(listy, false)
List<Submission#0.A>(2) { Submission#0.A { Id=3, IsPublished=false }, Submission#0.A { Id=6, IsPublished=false } }
(класс выше A
вместо Content
и метод Filter
вместо GetContent
)