public class BaseDoc { public string User; } public class DocumentA: BaseDoc {} public class DocumentB: BaseDoc {} public class DocumentC: BaseDoc {} public class DocumentD: BaseDoc {} public class DocumentE: BaseDoc {} public class DocumentF: BaseDoc {} public class DocumentG: BaseDoc {} public class DocumentH: BaseDoc {} public class DocumentRepository where T: BaseDoc { public List documents; public DocumentRepository() { documents = new List(); } public IEnumerable GetUserDocuments(string user) { return documents.Where(x => x.User == user); } }