in nuget-extensions/nuget-commands/src.2.8/QueryBuilder.cs [13:35]
public static Expression GenerateQuery(PackageFetchOption fetchOption, IEnumerable<string> ids, ParameterExpression param)
{
var idFilter = GeneratePackageIdFilter(ids, param);
switch (fetchOption)
{
case PackageFetchOption.IncludeAll:
return idFilter;
case PackageFetchOption.IncludeLatest:
{
var pi = typeof(IPackage).GetProperty("IsLatestVersion");
if (pi == null) goto case PackageFetchOption.IncludeAll;
return Expression.And(Expression.Property(param, pi), idFilter);
}
case PackageFetchOption.IncludeLatestAndPrerelease:
{
var pi = typeof(IPackage).GetProperty("IsAbsoluteLatestVersion");
if (pi == null) goto case PackageFetchOption.IncludeAll;
return Expression.And(Expression.Property(param, pi), idFilter);
}
default:
throw new Exception("Unexpected PackageFetchOption: " + fetchOption);
}
}