How to refactor this code?

.net, c#, refactoring

Solution

Assuming you have .NET 3.5:

string Filter(string input, SomeType item, Func<SomeType, string> extract)
{
    if (!String.IsNullOrEmpty(input))
    {
        if (item == null) return ",";
        else return "," + extract(item);
    }
}

_gridModel.Header += Filter(_gridModel.Header, item, i => i.Header);
_gridModel.Width += Filter(_gridModel.Width, item, i => i.Width);
_gridModel.Align += Filter(_gridModel.Align, item, i => i.Align);

// etc...

Problem

how can i refactor this code down to one method or something? ``` if (!string.IsNullOrEmpty(_gridModel.Header)) _gridModel.Header += ","; if (item != null) _gridModel.Header += item.Header; if (!string.IsNullOrEmpty(_gridModel.Width)) _gridModel.Width += ","; if (item != null) _gridModel.Width += item.Width; if (!string.IsNullOrEmpty(_gridModel.Align)) _gridModel.Align += ","; if (item != null) _gridModel.Align += item.Align; if (!string.IsNullOrEmpty(_gridModel.Filter)) _gridModel.Filter += ","; if (item != null) _gridModel.Filter += item.Filter; if (!string.IsNullOrEmpty(_gridModel.Type)) _gridModel.Type += ","; if (item != null) _gridModel.Type += item.Type; if (!string.IsNullOrEmpty(_gridModel.Sort)) _gridModel.Sort += ","; if (item != null) _gridModel.Sort += item.Sort; ```

Original source