Я запускаю запрос LINQ для некоторых записей, которые я хочу обновить, и беру счет, прежде чем возвращать их обратно в базу данных. У меня возникают проблемы, когда я пытаюсь взять счет на запрос Linq, который был переназначен во втором условном выражении.Получение неверного подсчета из запроса LINQ
graduates = graduates.Where(m => m.NotifySentInd == false);
Однако запрос так же, как это около вершины возвращает правильное количество пользователей в запросе, когда я выбираю опцию «AllStudents», но никогда в втором условном или с подобным запросом я имею в верхней части, когда выбрав «ApprovedNotYetSent»
public void ApproveAdultEdStudents(string Option, string CurrentYear)
{
var graduates = _unitOfWork.GraduateRepository.Graduates.Where(m => m.StudentTypeCd == "A" && m.SchoolYear == CurrentYear);
System.Diagnostics.Debug.WriteLine("A: " + graduates.Count());
var gradsSent = graduates.Where(m => m.NotifySentInd == false);
System.Diagnostics.Debug.WriteLine("B: " + gradsSent.Count());
if (Option == "AllStudents") {
foreach (var item in graduates) {
item.NotifySentInd = true;
item.DiplomaOrderDt = DateTime.Now;
item.DiplomaOrderToVendorInd = false;
}
System.Diagnostics.Debug.WriteLine("C: " + graduates.Count());
} else if (Option == "ApproveNotYetSent") {
graduates = graduates.Where(m => m.NotifySentInd == false);
foreach (var item in graduates) {
item.NotifySentInd = true;
item.DiplomaOrderDt = DateTime.Now;
item.DiplomaOrderToVendorInd = false;
}
System.Diagnostics.Debug.WriteLine("D: " + graduates.Count());
}
}
Когда я код, я получаю следующие результаты.
AllStudents
A: 69
B: 68
C: 69
ApproveNotYetSent
A: 0
B: 0
D: 0
не повторно наз- вать Результаты. –
Linq действует как представление, а не массив или список. Вызывая Count() или аналогичные методы, вы возвращаетесь к исходному набору данных и перечитываете этот результат. Если исходные данные разные, результат будет другим. – john