【发布时间】:2019-12-14 09:48:00
【问题描述】:
我有一个User 列表和Branch 列表。一个Branch 可以有多个User。我需要根据BranchId 从Branch 分配User 中的几个属性。这是我的课程。
用户:
public class User
{
public Guid Id { get; set; }
public bool Active { get; set; }
public Guid BranchId { get; set; }
public string BranchName { get; set; }
}
分公司:
public class Branch
{
public Guid Id { get; set; }
public bool Active { get; set; }
public string BranchName { get; set; }
}
这是我尝试过的,
foreach (var user in vm)
{
var branch = branches.Single(b => b.Id.Equals(user.BranchId));
user.BranchName = branch.BranchName;
}
现在这可行,但我觉得这不是一个好的解决方案,因为迭代用户并每次为该用户获取分支并分配它。可能列表中的多个用户可以拥有相同的BranchId,在这种情况下,就像我一次又一次地阅读同一个分支一样。使用 LINQ 的任何更好的解决方案还是可以通过任何方式改进?请帮忙。
【问题讨论】:
-
一个小的改进是使用
.First()而不是.Single(),因为后者总是迭代整个列表...
标签: c# .net performance linq