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

时间:2018-08-08 16:07:24

标签: c# linq

我有一个代码:

 {
        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的select或其他词来获取列表“ 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)`

1 个答案:

答案 0 :(得分:0)

这段代码:

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()是普通的LinQ,则应该可以将ids放在使用变量import django.shortcuts import render def my_view(request): if request.method == 'POST': # The user clicked the button (POST) return render(request, "load.html") # The user is just loading the view for the first time (GET) return render(request, "index.html") 的任何地方。如果您有LinQ的提供程序,该提供程序可能无法进行转换(例如,转换为数据库语句),则可能需要使用临时变量。但是,如果您确实使用了这种提供程序,则可能会有一种完全不同甚至更好的方法。