Create a SharePoint list programmatically in C#.

Add lookup field for our newly created list.

This is a sample code.

public void createList()
{
// choose your site
SPSite site = new SPSite("http://merdev-moss:5050");
SPWeb web = site.OpenWeb();
SPListCollection lists = web.Lists;

// create new Generic list called "My List"

lists.Add("My List", "My list Description", SPListTemplateType.GenericList);

SPList newList = web.Lists["My List"];

// create Text type new column called "My Column"
newList.Fields.Add("My Column", SPFieldType.Text, true);

/*create lookup type new column called "Lookup Column"
* Here I am going to get the information from the "Title"
* column of a list called "User Roles"
*/

SPList targetList = web.Lists["User Roles"];

newList.Fields.AddLookup("Lookup Column", targetList.ID, false);
SPFieldLookup lkp = (SPFieldLookup)newList.Fields["Lookup Column"];
lkp.LookupField = targetList.Fields["Title"].InternalName;
lkp.Update();

// make new column visible in default view
SPView view = newList.DefaultView;
view.ViewFields.Add("My Column");
view.ViewFields.Add("Lookup Column");
view.Update();

}