Я пытаюсь изменить нижний запрос Linq, чтобы вернуть первую подходящую строку для максимальной версии.Измените Linq, чтобы вернуть первое соответствующее значение
+----+------+---------+-----+
| PK | Name | Version | abc |
+----+------+---------+-----+
| 1 | Bill | 1 | 7 |
| 2 | Bob | 1 | 2 |
| 3 | Ben | 1 | 3 |
| 4 | Bob | 2 | 2 |
| 5 | Ben | 2 | 3 |
| 6 | Ben | 2 | 3 |
+----+------+---------+-----+
В настоящее время он вернется:
+----+------+---------+-----+
| PK | Name | Version | abc |
+----+------+---------+-----+
| 1 | Bill | 1 | 7 |
| 4 | Bob | 2 | 2 |
| 5 | Ben | 2 | 3 |
| 6 | Ben | 2 | 3 |
+----+------+---------+-----+
Когда я хочу, чтобы вернуться:
+----+------+---------+-----+
| PK | Name | Version | abc |
+----+------+---------+-----+
| 1 | Bill | 1 | 7 |
| 4 | Bob | 2 | 2 |
| 5 | Ben | 2 | 3 |
+----+------+---------+-----+
var source = (from item in baseSource
where item.Version > 0
where item.Published
where db.abcTest.Where(it => it.Published && it.Name == item.Name).Max(it => it.Version) == item.Version
orderby item.Name, item.Version descending
select new
{
item.PK,
item.Name,
item.Version,
item.abc
}
).ToList();
return source;
может быть 'First()' или 'FirstOrDefault()'? –
Вы читали о "group by"? – CodeCaster