我有一个代码:
{
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)`
答案 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的提供程序,该提供程序可能无法进行转换(例如,转换为数据库语句),则可能需要使用临时变量。但是,如果您确实使用了这种提供程序,则可能会有一种完全不同甚至更好的方法。