我想知道linq是否已经包含了动态生成集合的内容。
让我们说我想要一个GUID的动态集合,我目前使用类似下面的代码:
public static IEnumerable<T> Generate<T>(Func<T> generator)
{
for (;;)
{
yield return generator();
}
}
var someIds = MyLinqExtensions.Generate(Guid.NewGuid).Take(10);
因为这样的结构有时候非常方便,如果已经存在,我宁愿不重新实现轮子。
答案 0 :(得分:2)
不,我不相信LINQ目前包含类似的内容。你最接近的将是:
var someIds = Enumerable.Repeat(0, int.MaxValue)
.Select(ignored => Guid.NewGuid)
.Take(10);
答案 1 :(得分:2)
答案 2 :(得分:0)
您可能希望查看带有LINQ和RX的人员的InteractiveExtensions(IX)。除此之外,它还包括一个类似于你提议的Generate方法:
public static IEnumerable Generate(TState initialState,Func condition,Func iterate,Func resultSelector)
我在http://www.thinqlinq.com/Post.aspx/Title/Ix-Interactive-Extensions-return
做了一个简短的IX写作