Let's say I have a simple list of objects like this:
public class DataField
{
    public int DataFieldId {get; set;}
    public int KeyId {get; set;}
    public string FieldName {get; set;}
    public string Data {get; set;}
}
Now I would like to get a list of the values in a Property using the string value of the Property name, like this:
public List<string> getFieldData(List<DataField> dataToSearch, string propertyName)
{
    // This is the area I'd like to figure out.
    return dataToSearch.Select(ds => ds.propertyName).Distinct.ToList();
}
public void MyMethod()
{
    var data = new List<DataField>{
        new DataField{DataFieldId = 1, KeyId = 1,
            FieldName = "UserName", Data = "jSmith"},
        new DataField{DataFieldId = 2, KeyId = 1,
            FieldName = "Email", Data = "jSmith@nowhere.com"},
        new DataField{DataFieldId = 3, KeyId = 1,
            FieldName = "PreferredContact", Data = "Phone"},
        new DataField{DataFieldId = 4, KeyId = 2,
            FieldName = "UserName", Data = "jDoe"},
        new DataField{DataFieldId = 5,KeyId = 2,
            FieldName = "Email", Data = "janeDoe@emailServer.net"},
        new DataField{DataFieldId = 6, KeyId = 2,
            FieldName = "PreferredContact", Data = "Email"}
    };
    // Notice I want to search using a string
    var fieldNames = getFieldData(data, "FieldName");
}
I would want fieldNames to be a List<string> containing:
"UserName"
"Email"
"PreferredContact"  
I would like to use a string to specify the column to return.
 
     
    