Linq, ¿Cómo hacer groupBy?

tabla de proyecto:

ID, Departamento, Año, Nombre, Nivel

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

Tengo una mesa de proyectos. Necesito obtener el proyecto para cada departamento para el año 2001. para DeptId = 2, no tiene ningún proyecto para el año 2001, necesito mostrar el proyecto del año anterior, que es el 2000.

Mi linq debería volver después del resultado de vuelta.

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

Estaba pensando en usar groupby, agrupar el DeptId, pero no estoy seguro de cómo escribir esta consulta.

Actualizar:

Esto es lo que intenté.

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

pero esto no devolverá el resultado para DeptId = 2, por eso estoy pensando en usar groupby, pero no tengo idea de cómo escribirlo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta