As others have said the syntax is straightforward, you can simply treat Session like a hashmap or Dictionary if you want.
Session["userData"] = userData;
UserInfo userData = Session["userData"] as UserInfo;
Note (since you're new to C#) that the "as" keyword is basically a nullable cast; if the cast fails your userData variable will be set to null.
For extra credit, (and depending on your app's requirements) you could wrap all data access in a DAO or repository-like object, and have that object use Session under the hood. The location of data storage is an implementation detail that the controller itself doesn't need; fetching it from the Session vice the database (or an xml file, or static in-memory objects, or whatever) should be irrelevant to the controller (whose main job should be controlling application flow).