You don't have to create new list each time the method is called. Use iterator blocks for instance:
public IEnumerable<int> GetAdjacencies(int vertex)
{
foreach (int i in adj[vertex])
yield return i;
}
I don't know how exactly the graph is represented in your code, so the details of getting adjacencies list may vary.