LINQ - GroupBy uma chave e, em seguida, coloque cada item agrupado em 'buckets' separados

Tenho uma lista de itens como tais:

public class Item
{
    public int ItemId { get; set; }
    public string ItemName { get; set; }
    public int ListId { get; set; }
}

1 Test1 1

2 Test2 1

3 Test3 1

4 List 2

5 List2 2

6 Testing 3

7 Testing2 3

8 Testing3 3

Existe uma maneira de eu agrupar peloListId e coloque-os em cada balde separado, ou seja,ListId1 bucket terá todos os itens comListId == 1. A lista é retornada dinamicamente do SQL, então não sei de antemão quantosListId haverá

questionAnswers(3)

yourAnswerToTheQuestion