如何使用 linq 从对象列表创建 Guid (Guid []) 列表?



我有一个代码:

 {
        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 的提供程序,该提供程序执行的转换(例如数据库语句(可能不起作用,并且您可能需要临时变量。但是,如果您确实使用这样的提供程序,则可能会有完全不同的方法,也许是更好的方法。

最新更新