我在我们的一个项目中发现了下面的一段代码。我被困了两天:-(试图理解 Aggregate & LinQKit Expand。
您可以帮助将 LINQ 以下转换为正常的 foreach 操作吗?
public Expression<Func<Purchase, bool>> forTarget(List<string> idList)
{
Expression<Func<Purchase, string>> fc = p => p.ClientId;
Expression<Func<Purchase, bool>> predicate = m => false;
return idList.Aggregate(predicate, (p, id) => p.Or(m => fc.Invoke(m) == id), p => p.Expand());
}
internal class Purchase
{
public int Price { get; set; }
public string Description { get; set; }
public string ClientId { get; set; }
}
public class Client
{
public string Id { get; set; }
}
或者至少,任何关于这个 LINQ 表达式在列表中所做的事情的指针都会非常有帮助。
return idList.Aggregate(predicate,
(p, id) => p.Or(m => fc.Invoke(m) == id),
p => p.Expand());