我有一個(對象)列表,對象中有一個屬性作爲字符串。LINQ表達式僅提取兩個單詞短語
此屬性總是包含單個的詞語,希望通過對所有的順序組合循環,例如:
- 字1
- 單詞2
- WORD3
- word4
- 的word5
我想寫LINQ這將允許我通過數據以下列格式迭代:
- WORD1 [空格] WORD2
- WORD2 [空格] WORD3
- WORD3 [空格] word4
- word4 [空格] WORD5
任何人都可以建議這樣做的最有效的方法。
我有一堆有條件的IF語句,我正在尋找刪除。
我有一個(對象)列表,對象中有一個屬性作爲字符串。LINQ表達式僅提取兩個單詞短語
此屬性總是包含單個的詞語,希望通過對所有的順序組合循環,例如:
我想寫LINQ這將允許我通過數據以下列格式迭代:
任何人都可以建議這樣做的最有效的方法。
我有一堆有條件的IF語句,我正在尋找刪除。
你可以編寫自己的擴展方法:
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);
感謝您的回覆。我使用.NET 4並實現了Jon的答案。 – Nick 2012-01-27 16:57:44
如果不是在.NET 4中,喬恩斯基特仍然可以提供幫助。參見Jon Skeet的[EduLinq](http://msmvps.com/blogs/jon_skeet/)的[Zip](http://code.google.com/p/edulinq/source/browse/src/Edulinq/Zip.cs) archive/tags/Edulinq/default.aspx)系列。 – Brian 2012-01-27 14:21:53