public List <ClientAllData> AddAllClientInfo() { DBOperations operations = new DBOperations(); DBClientConfidentialFields clientConfidentialFields = new DBClientConfidentialFields(); DBEmployeeConfidentialFields employeeConfidentialFields = new DBEmployeeConfidentialFields(); var allInfo = from mainFields in operations.GetClientFields() join confFields in clientConfidentialFields.GetClientConfidentialFields() on mainFields.ID equals confFields.ID join myManager in operations.GetEmployeeFields() on mainFields.Manager equals myManager.ID join managerInfo in employeeConfidentialFields.GetEmployeeConfidentialFields() on myManager.ID equals managerInfo.ID select new { ClientID = mainFields.ID, ClientName = mainFields.Name, ClientSurname = mainFields.Surname, ClientBirthday = mainFields.Birthday, ClientPhone = mainFields.Phone, InfoID = confFields.ID, Balance = confFields.Balance, Credit = confFields.Credit, Deposit = confFields.Deposit, Password = confFields.Password, ManagerName = myManager.Name, ManagerSurname = myManager.Surname, ManagerPhone = myManager.Phone, }; List <ClientAllData> list = new List <ClientAllData>(); foreach (var item in allInfo) { list.Add(new ClientAllData(item.ClientID, item.ClientName, item.ClientSurname, item.ClientBirthday, item.ClientPhone, item.InfoID, item.Balance, item.Credit, item.Deposit, item.Password, item.ManagerName, item.ManagerSurname, item.ManagerPhone)); } return(list); }