У меня есть объект User, который представляет таблицу User в моей базе данных. В этой таблице есть поле с именем ManagerID
, которое ссылается на другую запись пользователя (в основном отображение сотрудника на менеджера). У каждого пользователя также будет ссылка на другую таблицу, в которой может быть несколько записей, для примера мы назовем ее Records
.
Таким образом, основное правило заключается в том, что каждый пользователь может иметь несколько записей, и каждый пользователь может управлять группой других пользователей.
В качестве небольшого примера того, что мне нужно сделать:
User manager = Repository.FindUser('12345');
List<Record> TeamRecordCollection = new List<Record>();
// add the managers records to the team collection
var managerRecords = GetRecords(manager, DateTime.Today);
TeamRecordCollection.AddRange(managerRecords);
// add each individual team members records
foreach (var user in manager.TeamMembers)
{
var records = GetRecords(user, DateTime.Today);
TeamRecordCollection.AddRange(records);
}
...
private IEnumerable<Record> GetRecords(User user, DateTime date)
{
var records = from rec in user.Records
where rec.DateSubmitted == date
select rec;
return records.AsEnumerable();
}
// the above code isn't tested it is just a sample idea
Так что я хотел бы знать:
а) Можно ли это сделать одним оператором L2S?
б) Будет ли это эффективнее, чем нынешний способ?