我有一个(对象)列表,对象中有一个属性作为字符串。
此属性始终包含单个单词,并且希望成对循环遍历所有顺序组合,例如:
我正在尝试编写LINQ,它允许我以下列格式迭代数据:
有人能提出最有效的方法。
我现在有一堆条件IF语句,我想删除。
答案 0 :(得分:13)
答案 1 :(得分:1)
您可以编写自己的扩展方法:
public static IEnumerable<Tuple<TOutput, TOutput>> Pairwise<TInput, TOutput>(this IEnumerable<TInput> collection, Func<TInput, TOutput> func)
{
using (var enumerator = collection.GetEnumerator())
{
if (!enumerator.MoveNext()) yield break;
TOutput first = func(enumerator.Current);
while (enumerator.MoveNext())
{
TOutput second = func(enumerator.Current);
yield return Tuple.Create(first, second);
first = second;
}
}
}
哪个可以这样使用:
IEnumerable<string> pairs = yourCollection.Pairwise(element => element.Property).Select(t => t.Item1 + ' ' + t.Item2);