public void CreateList()
{
var listService = new Lists
{
Url = @"http://superDomain/sites/elSite/_vti_bin/Lists.asmx",
Credentials = CredentialCache.DefaultCredentials
};
const string listName = "Web Service Created";
var listCreatedAsXmlNode = listService.AddList(listName, "Web Service Created List Description", 100);
var listRetrieved = listService.GetList(listName);
XmlNode version = listRetrieved.Attributes["Version"];
var xmlDoc = new XmlDocument();
var titleAttrib = (XmlAttribute)xmlDoc.CreateNode(XmlNodeType.Attribute, "Title", String.Empty);
var descriptionAttrib = (XmlAttribute)xmlDoc.CreateNode(XmlNodeType.Attribute, "Description", String.Empty);
titleAttrib.Value = listName; // Can use this to update it
//descriptionAttrib.Value = "!" ;
var properties = xmlDoc.CreateNode(XmlNodeType.Element, "List", String.Empty);
properties.Attributes.Append(titleAttrib);
properties.Attributes.Append(descriptionAttrib);
var newFields = xmlDoc.CreateNode(XmlNodeType.Element, "Fields", String.Empty);
newFields.InnerXml =
@"<Method ID='1'>
<Field Type='DateTime' DateOnly='TRUE' DisplayName='My Date Field' FromBaseType='TRUE' Required='TRUE' Description='some text description'/>
</Method>
<Method ID='2'>
<Field Type='Number' MAX='10' DisplayName='NumberColumn' FromBaseType='TRUE' Required='TRUE' Description='This is a Number' />
</Method>
<Method ID='3'>
<Field Type='Calculated' DisplayName='MyCalcField' ResultType='Text'>
<Formula>=Title&NumberColumn</Formula>
<FormulaDisplayNames>=Title&NumberColumn</FormulaDisplayNames>
<FieldRefs>
<FieldRef Name='Title'/>
<FieldRef Name='NumberColumn'/>
</FieldRefs>
</Field>
</Method>
<Method ID='4'>
<Field ReadOnly='TRUE' Type='Counter' PrimaryKey='FALSE' DisplayName='Counter' FromBaseType='TRUE' />
</Method>";
var returnedNode = listService.UpdateList(listName ,properties, newFields, null, null, version.Value);
Console.WriteLine(returnedNode.OuterXml);
}