使用LINQ,选择每个组的第一个,创建具有特定列的新obj

时间:2017-09-19 17:23:30

标签: c# entity-framework linq

我试图从EF表中选择Id和Description,但在描述中使用不同的。

我意识到那里没有SelectFirst,但我认为这有助于描述我尝试做的事情(我看到它建议使用GroupBy/SelectFirst作为尝试的方式将Distinct应用于特定列):

var results = _db.Certifications
.GroupBy(c => c.Description)
.SelectFirst(c => new SearchCriterion {Id = c.CertificationId, Name = c.Description});

FirstOrDefault()最终不起作用(&#34;参数无法从使用中推断出来&#34;)并且我的属性(CertificationId / Description)未被识别。< / p>

1 个答案:

答案 0 :(得分:2)

几乎,您必须使用非按组分类的聚合。以下代码使用Max,将根据每个不同的CertificationId返回最大的description。您可以将其更改为Min以获得最小CertificationId

var results = _db.Certifications
        .GroupBy(c => c.Description)
        .Select(c => new SearchCriterion {Id = c.Max(y => y.CertificationId), Name = c.Key});