Потому что это выражение:
b.BlogComments.Where(...)
возвращает IEnumerable (из BlogComments), но затем вы передаете его в этот метод:
db.Blogs.Where(...)
, который ожидает функцию, которая возвращаетbool, а не IEnumerable.
Возможно, вам нужно что-то вроде этого:
var blogId = 5;
db.BlogComments.Where(bc => bc.BlogId == blogId && bc.Flag1 == true)
Если вам нужно выбрать комментарии из нескольких блогов, вы можете попробовать использовать Contains:
var blogIds = new [] {1,2,3,4,5};
db.BlogComments.Where(bc => blogIds.Contains(bc.BlogId) && bc.Flag1 == true)
Если вы хотите разместить критерии на множестве блогов, а также комментарии, то вы можете сделать это в одном запросе, используя объединение:
var query = from b in db.Blogs
join c in db.BlogComments on c.Blog equals b
where b.SomeField == "some value"
&& c.Flag1 == true
select c;