使用Linq和EF和SQL Server在组中进行过滤

时间:2018-01-29 11:50:23

标签: sql-server entity-framework linq

我有这样的Linq查询,它会获取表格中的所有重复项。

            var duplicates = entities.TableName.GroupBy(item => new { item.Field1, item.Field2 })
                            .Where(g => g.Count() > 1)
                            .SelectMany(g => g)
                            .ToList();

如何过滤表中的另一列,即类型为datetime的Field3,并希望所有行的日期时间介于昨天(即今天-1)和明天(即今天+ 1)之间.. < / p>

所以实际上,我希望所有具有Field1和Field2共同的重复项,并且在其中,我希望所有记录的Field3都是datetime类型,一次是昨天和明天b / w

谢谢

1 个答案:

答案 0 :(得分:0)

在GroupBy子句之前添加Where子句:

entities.TableName.Where(x => x > DateTime.Now.AddDays(-1)).GroupBy(...)

由于EF对某些类型的DateTime函数有一些问题,我编写Where子句的方式可能存在问题,在这种情况下,您可能需要使用Entity Functions库中的函数。 / p>