我需要一些帮助来使用 lambda 表达式来删除我的 Entity Framework 上下文中的重复条目。我有一个包含以下列的表格:
Id, DateOfIncident, Description, EmployeeId, IncidentTypeId, and IsAttendanceIncident
我想删除DateOfIncident, EmployeeID, IncidentTypeID and IsAttendanceIncident are the same.
我确实想保留一个条目的重复条目。我知道如何在 SQL 中使用带有 CTE 的存储过程来执行此操作,但我无法弄清楚如何使用 Lambda 表达式来完成此任务。
此代码返回一个列表,不包括我的重复项,但现在我该如何删除那些不在此列表中的重复项?
var query = db.Incidents.Where(x => x.IsAttendanceIncident == "Y").GroupBy(x => new { x.EmployeeId, x.DateOfIncident, x.IsAttendanceIncident })
.Select(x => x.FirstOrDefault());
更新:
所以我继续编写了自定义的 IEqualityComparer。现在如何使用 id 删除我的上下文中不在我 distinctItems 中的事件?
static void Main(string[] args)
{
DALIncidents.AttendanceEntities1 db = new DALIncidents.AttendanceEntities1();
IEnumerable<DALIncidents.Incident> distinctItems = db.Incidents.Where(c => c.IsAttendanceIncident == "Y");
distinctItems = distinctItems.Distinct(new DALIncidents.DistinctIncidentComparer());
Console.ReadLine();
}