Ну, что здесь ID
? В частности, это локальная переменная? Существуют некоторые проблемы с областью действия / перехвата, что означает, что может быть желательно использовать вторую переменную копию только для запроса:
var id = ID;
BlogPost post = (from p in dc.BlogPosts
where p.BlogPostID == id
select p).Single();
Также; если это LINQ-to-SQL, то в текущей версии вы получаете немного лучшее поведение, если используете форму:
var id = ID;
BlogPost post = dc.BlogPosts.Single(p => p.BlogPostID == id);