gpt4 book ai didi

c# - 有没有更有效的方法将这些平面数据放入字典中?

转载 作者:行者123 更新时间:2023-11-30 22:35:10 26 4
gpt4 key购买 nike

我有以下代码:

public class Alert
{
public string Alias { get; set; }
public int ServiceHours { get; set; }
public int TotalHoursDone { get; set; }
public int UserId { get; set; }
public int VehicleId { get; set; }
}

private static readonly List<Alert> AlertsToDo = new List<Alert>();

public void SomeFunction() {
// creates a dictionary of user ids as the key with their alerts
// (sorted by alias) as the value.
// Just one loop needed and no awkward state logic.
var alertsGrouped = AlertsToDo.Select(a => a.UserId)
.Distinct()
.ToDictionary(userId => userId,
userId => AlertsToDo.Where(a => a.UserId == userId)
.OrderBy(a => a.Alias)
.ToList());
}

所以,我有一个警报对象列表。我的 LINQ 查询输出一个字典,其键是 UserId,其值是按别名排序的该 UserId 的警报列表。

我对这个查询的独创性感到非常满意,但我想知道是否有更简单的方法来做到这一点?具体来说,我必须对每个键使用第二个查询来创建值列表。纯粹出于兴趣而提问,因为这对于手头的工作来说已经足够快了。

最佳答案

使用 Enumerable.GroupBy 可读性更强的更短方法方法。对于少量数据,您很可能看不到差异,而大量数据会改变性能。您的查询首先获取不同的值,然后过滤 UserId 上的项目。该分组预先减少了这些步骤。要确定您需要分析。

这是使用分组的查询:

var query = AlertsToDo.GroupBy(a => a.UserId)
.ToDictionary(g => g.Key,
g => g.OrderBy(a => a.Alias).ToList());

关于c# - 有没有更有效的方法将这些平面数据放入字典中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7517023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com