public CommonHeading Adapt(string[] newheading) { var fields = newheading.Select(name => { var field = Fields.FirstOrDefault(f => f.Name == name); return((field.CType == CommonType.None) ? new CommonField(name, CommonType.None) : field); }); return(CommonHeading.Create(fields)); }
public static CommonTable Create(string name, CommonField[] fields) { return(Create(name, CommonHeading.Create(fields))); }
// create a heading minus one field public CommonHeading Remove(CommonField field) { return(CommonHeading.Create(Fields.Where(f => f.Name != field.Name))); }
public CommonHeading Append(IEnumerable <CommonField> fields) { return(CommonHeading.Create(Fields.Concat(fields))); }
// create a heading plus one field public CommonHeading Append(CommonField field) { return(CommonHeading.Create(Fields.Append(field))); }
// create a heading as this minus other public CommonHeading Minus(CommonHeading other) { var fields = Fields.Where(f => !other.Fields.Any(o => f.Name == o.Name)); return(CommonHeading.Create(fields)); }
// create a heading as the intersection of this and other public CommonHeading Intersect(CommonHeading other) { var fields = Fields.Where(f => other.Fields.Any(o => f.Name == o.Name)); return(CommonHeading.Create(fields)); }
// create a heading as the union of this and other public CommonHeading Union(CommonHeading other) { var fields = Fields.Concat(other.Fields.Where(f => !Fields.Any(o => f.Name == o.Name))); return(CommonHeading.Create(fields)); }
// rename a field from old to new public CommonHeading Rename(CommonField field1, CommonField field2) { var fields = Fields.Select(f => (f.Name == field1.Name) ? new CommonField(field2.Name, f.CType) : f); return(CommonHeading.Create(fields)); }