我有一个代码:
{
int i = 0;
Guid[] ids = new Guid[clientCertifications.Count()];
foreach (Certification certif in clientCertifications)
{
ids[i] = certif.Id;
i++;
}
return listOffices.GroupBy(lo => lo.pk_Office)
.Select(loG => loG.First()
.MapOfficeToModel(
loG.Where(g => g.FK_Guid.In(ids)).Select(g => g.FK_Guid).ToCertifications(clientCertifications)
));
}
我想知道是否可以使用 linq 的选择或其他单词来获取列表"ids"?在示例中,我使用循环 for 和 foreach,但我认为我们可以做更短的不是吗?在行中:
loG.Where(g => g.FK_Guid.In(***here something like: clientCertifications.Select(o => o.Id ... )*** ids)).Select(g => g.FK_Guid).ToCertifications(clientCertifications)`
这段代码:
int i = 0;
Guid[] ids = new Guid[clientCertifications.Count()];
foreach (Certification certif in clientCertifications)
{
ids[i] = certif.Id;
i++;
}
基本上是以下的复杂版本:
var ids = clientCertifications.Select(certif => certif.Id).ToArray();
而且你应该能够把clientCertifications.Select(certif => certif.Id).ToArray()
放在任何你会使用变量的地方,ids
如果它是普通的 LinQ。如果您有 LinQ 的提供程序,该提供程序执行的转换(例如数据库语句(可能不起作用,并且您可能需要临时变量。但是,如果您确实使用这样的提供程序,则可能会有完全不同的方法,也许是更好的方法。