2

現在、私は文字列を単一のリストにインターリーブする必要がありますが、それを行う方法について途方に暮れています。

私が現在使用しているコードは次のとおりです(私はそれほど遠くまで到達していません):

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

リストをインターリーブする標準的な方法はありますか?

4

2 に答える 2

5

両方を一緒に圧縮したい場合は、次を使用できますEnumerable.Zip

String[] details = details.Split(',');
String[] ids = ids.Split(',');
List<String> idDetails = ids.Zip(details, (id, detail) => id + " " + detail)
                        .ToList();
于 2012-05-17T11:33:55.107 に答える
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;
    }
于 2012-05-17T11:55:17.843 に答える