Linq, como fazer groupBy?

tabela de projeto:

Id, DeptId, Ano, Nome, Nível

Id = 1, DeptId = 1, Year = 2000, Name = "ABC", Level = 1
Id = 2, DeptId = 1, Year = 2001, Name = "ABC1", Level = 1
Id = 3, DeptId = 1, Year = 2002, Name = "ABC2", Level = 1

Id = 4, DeptId = 2, Year = 2000, Name = "ABC3", Level = 1
Id = 5, DeptId = 2, Year = 2002, Name = "ABC4", Level = 1

Id = 6, DeptId = 3, Year = 2000, Name = "ABC5", Level = 1
Id = 7, DeptId = 3, Year = 2001, Name = "ABC6", Level = 1
Id = 8, DeptId = 3, Year = 2002, Name = "ABC7", Level = 1

Eu tenho uma tabela de projetos. Eu preciso pegar o projeto para cada departamento para 2001. Para DeptId = 2, ele não tem projeto para 2001, eu preciso mostrar o projeto do ano anterior que é 2000.

meu linq deve retornar o resultado seguinte.

Id = 2, DeptId = 1, Year = 2001, Name = "ABC1", Level = 1
Id = 4, DeptId = 2, Year = 2000, Name = "ABC3", Level = 1
Id = 7, DeptId = 3, Year = 2001, Name = "ABC6", Level = 1

Eu estava pensando em usar groupby, agrupar o DeptId, mas não sei como escrever essa consulta.

Atualizar:

Isso é o que eu tentei.

var projects = project.Where (x => x.Year == 2001)

mas isso não retornará o resultado para DeptId = 2, é por isso que estou pensando em usar groupby, mas sem saber como escrevê-lo.

questionAnswers(2)

yourAnswerToTheQuestion