2012-05-17 51 views
2

目前我需要將字符串交織成一個單列表,但是我不知道如何去做。作爲一個列表交錯拆分字符串c#

我目前使用的代碼是這樣的(我已經不是很遠得到):

public PartialViewResult Interleave(string details, string ids) 
    { 
      List<string> detailList = details.Split(',').ToList(); 
      List<string> idlist = ids.Split(',').ToList(); 
      return PartialView("_ConceptDetail1", detailList)  
    } 

有交錯名單的標準方式?

+2

HTTP: //msdn.microsoft.com/en-us/library/dd267698.aspx –

+0

謝謝,正是我想要的! –

+0

您不需要.ToList臨時局部變量。提供樣本輸入和期望的輸出,它會更容易地幫助您實現您想要的 –

回答

5

也許你想壓縮兩者一起,你可以使用Enumerable.Zip,則:

String[] details = details.Split(','); 
String[] ids = ids.Split(','); 
List<String> idDetails = ids.Zip(details, (id, detail) => id + " " + detail) 
         .ToList(); 
+0

這正是我想要做的。 –

0

基於Zip的實現,我認爲我會做我自己的擴展方法:

static IEnumerable<T> Interleave<T>(this IEnumerable<T> first, IEnumerable<T> second) 
    { 
     using (IEnumerator<T> enumerator = first.GetEnumerator()) 
     { 
      using (IEnumerator<T> enumerator2 = second.GetEnumerator()) 
      { 
       while (enumerator.MoveNext() && enumerator2.MoveNext()) 
       { 
        yield return enumerator.Current; 
        yield return enumerator2.Current; 
       } 
      } 
     } 
     yield break; 
    }