我有一个类型,它包含一个IEnumerable<T>
并包含一些额外的逻辑,实现了一个我们将调用的接口IMyIterable<T>
。一方面,我希望人们使用 LINQ 方法来过滤和处理(通过将它们实际应用到底层IMyIterable<T>
对象),但另一方面,我仍然希望在已应用 LINQ 方法。例如IMyIterable<T>
var query = myIterable.Select(x => x.whatever);
//query is now of a completely different type than IMyIterable<T>
var result = query.MyCustomThingy();
//But I really want MyCustomThingy to work too.
我知道一个解决方案是:
var query = myIterable.Linq(x => x.Select(y => y.Whatever));
但是额外的括号对我来说不合适。我还有其他方法可以做到这一点吗?我实际上并没有要求Select()
返回自定义类的方法(尽管如果有巧妙的方法可以做到这一点,例如涉及代码生成,我肯定会加入),只是一些更简洁的语法。