五年（1027年）得同学究出身，为蔡州汝阳县主簿。八年（1030年），再举进士及第，为华州观察推官。得到转运使李纮推荐，迁大理寺丞、知翼承县，又得祁国公杜衍聘为永兴司录。历官右正言，迁天章阁待制，担任华州推官转运使。着有《唐史论断》七十五卷，今仅存三卷，朱熹称其议论胜《唐鉴》。又有文集七卷。嘉祐元年（1056年），迁刑部郎中、天章阁待制、河北都转运使。卒于仁宗嘉祐二年（1057年），年五十九岁。欧阳修撰其墓志铭。《宋史》卷二百九十五有传。