LINQ表达式仅提取两个单词短语
我有一个(对象)列表,对象中有一个属性作为字符串。
该属性总是包含单个单词,并希望循环遍历所有顺序组合,例如:
我正在尝试编写LINQ,这将允许我按以下格式遍历数据:
任何人都可以提出这样做的最有效的方法。
在我想要删除的时候,我有一大堆有条件的IF语句。
我想你想要:
var pairs = words.Zip(words.Skip(1), (x, y) => x + " " + y);
假设你使用的是.NET 4,这是Zip
引入的时候。
你可以编写自己的扩展方法:
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);
链接地址: http://www.djcxy.com/p/51383.html
上一篇: LINQ expression to extract only two word phrases
下一篇: Randomize a List<T>