I think you could use standard query operator and lambda expression to do what you describled, please try:
var query = from u in users select u;
if (condition1)
{
query = query.Where(e => e.ID > 0);
}
else if (condition2)
{
query = query.Where(e => e.ID > 0 && e.GroupId > 0);
}
else if (condition3)
{
query = query.Where(e => e.GroupId > 0);
}
else if (condition4)
{
query = query.Where(e => e.ID > e.GroupId);
}