交叉拆分字符串作为列表c#

时间:2012-05-17 11:28:43

标签: c# asp.net-mvc

目前我需要将字符串交错到一个单一的列表中,但是如何做到这一点却不知所措。

我目前使用的代码就是这个(我还没有走得太远):

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

是否有标准方法来交错列表?

2 个答案:

答案 0 :(得分:5)

也许您想将两者拼接在一起,然后可以使用Enumerable.Zip

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

答案 1 :(得分: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;
    }