我有一个庞大的项目列表,需要将它们分组为一个属性.然后应该选择每组中最老的一组.
简化示例:选择每个用户中最早的用户FirstName.
using (ED.NWEntities ctx = new ED.NWEntities())
{
IQueryable<ED.User> Result = ctx.User.GroupBy(x => x.FirstName)
.Select(y => y.OrderBy(z => z.BirthDate)
.FirstOrDefault())
.AsQueryable();
}
Run Code Online (Sandbox Code Playgroud)
课程User:
public partial class User
{
public int UserID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Nullable<System.DateTime> BirthDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这个语句花了这么长时间,直到我设置了一个断点Result并查看生成的SQL语句:
{SELECT
`Apply1`.`UserID`,
`Apply1`.`FIRSTNAME1` AS `FirstName`,
`Apply1`.`LastName`,
`Apply1`.`BirthDate`
FROM (SELECT
`Distinct1`.`FirstName`,
(SELECT
`Project2`.`UserID`
FROM `User` AS …Run Code Online (Sandbox Code Playgroud)