【发布时间】:2014-11-19 14:44:52
【问题描述】:
我正在努力想出一个 linq 语句,我想只选择数组中具有最高版本的一些项目。 给定一组应用程序,例如:
[{name="Adobe", version=1},
{name="Adobe", version=2},
{name="Adobe", version=3},
{name="VLC", version=1},
{name="VLC", version=2},
{name="VLC", version=3}]
我需要一个 linq 来仅选择 1 个 adobe 应用程序、最高版本的应用程序和 1 个 VLC 应用程序。 结果应如下所示:
[{name="Adobe", version=3},
{name="VLC", version=3}]
到目前为止我得到的最好的是:
var names = apps.Select((n => n.name)).Distinct();
foreach (var name in names)
{
var latest = apps.Where(n => n.name == name).OrderByDescending(n => n.version).FirstOrDefault();
//add latest to the new appList
}
我一直在思考是否有更简单的、仅 linq 的方法来做到这一点。有什么建议吗?
谢谢。
【问题讨论】:
-
欢迎来到 StackOverflow!请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”。
-
如果有另一个应用程序(“记事本”)版本为 1-4,您希望发生什么?您还想要 Adobe 和 VLC v3 吗?
-
你知道Version类吗?