См. Следующий оператор запроса:
Тестовые данные (вы можете получить значение таблицы из базы данных, используя ядро EF, более подробную информацию об использовании ядра EF с asp. net MVC, проверьте эту ссылку ):
List<Employee> todayEmployees = new List<Employee>()
{
new Employee(){ EmpID=1001, EmpName="David", Status="OT" },
new Employee(){ EmpID=1002, EmpName="Tom", Status="Off-line" },
new Employee(){ EmpID=1003, EmpName="Jason", Status="OT" },
new Employee(){ EmpID = 1004, EmpName="Dick", Status="Off-line" },
new Employee(){ EmpID = 1005, EmpName="Cece", Status="OT" },
new Employee(){ EmpID = 1006, EmpName="Dillion", Status="OT" },
new Employee(){ EmpID = 1007, EmpName="Jeffery", Status="Off-Line" }
};
List<Employee> yesterdayEmployees = new List<Employee>()
{
new Employee(){ EmpID=1001, EmpName="David", Status="OT" },
new Employee(){ EmpID=1002, EmpName="Tom", Status="OT" },
new Employee(){ EmpID=1003, EmpName="Jason", Status="OT"},
new Employee(){ EmpID = 1004, EmpName="Dick", Status="OT" },
new Employee(){ EmpID = 1005, EmpName="Cece", Status="Off-Line" }
};
Чтобы получить Сотрудник, статус которого изменен, мы могли бы использовать предложение Join и предложение where для сравнения статуса сотрудника:
// get the employees which changes status
var result = (from t in todayEmployees
join y in yesterdayEmployees
on t.EmpID equals y.EmpID
where (t.Status != y.Status)
select t).ToList();
Вывод:
//get the employees status change information
var query3 = (from t in todayEmployees
join y in yesterdayEmployees
on t.EmpID equals y.EmpID
where (t.Status != y.Status)
select new EmployeeViewModel()
{
EmpID = t.EmpID,
EmpName = t.EmpName,
StatusChangeLog = "change status from " + t.Status + " to " + y.Status
}).ToList();
Output:
To get the Employees which in the TodayEmployees Table, but not exist in the YesterdayEmployee Table, we could use the содержит метод для определения, содержит ли последовательность указанный элемент.
//get the employees, which in TodayEmployees Table, but not exist in the YesterdayEmployee
var query4 = (from t in todayEmployees
where !(from y in yesterdayEmployees select y.EmpID).Contains(t.EmpID)
select t).ToList();
var query5 = todayEmployees.Where(c => !yesterdayEmployees.Select(y => y.EmpID).Contains(c.EmpID)).Select(t => t).ToList();
Вывод:
введите описание изображения здесь