我认为做这样的事情会很不错(在 lambda 做收益率回报的情况下) :
public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
IList<T> list = GetList<T>();
var fun = expression.Compile();
var items = () => {
foreach (var item in list)
if (fun.Invoke(item))
yield return item; // This is not allowed by C#
}
return items.ToList();
}
然而,我发现我不能在匿名方法中使用屈服。我想知道为什么。交出文件只是说这是不允许的。
由于它不允许,我只是创建了 List 并将项目添加到其中。