目前我需要将字符串交错到一个单一的列表中,但是如何做到这一点却不知所措。
我目前使用的代码就是这个(我还没有走得太远):
public PartialViewResult Interleave(string details, string ids)
{
List<string> detailList = details.Split(',').ToList();
List<string> idlist = ids.Split(',').ToList();
return PartialView("_ConceptDetail1", detailList)
}
是否有标准方法来交错列表?
答案 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;
}