The internal column is easily obtainable from the Sharepoint object model.
A recent function required me to use the internal name instead of the (provided) displayname. The following function resolved the problem quickly and easily:
private string InternalName(string displayName)
SPFieldCollection fields = SPContext.Current.Web.Lists["MyListName"].Fields;
if (string.Compare(displayName, "Title", true) == 0)
throw new Exception("Column not found");
This function is not great, but it has solved my problem. The one caveat is the extracting of the 'Title' column. The function was returning 'LinkTitle', which caused the bulk update the fail quietly.
The hack fixed the problem. This is not my most elegant piece of code, but it does the business.