c# - 网格化IEnumerable <T>一起列出

标签 c# linq

我正在寻找在IEnumerable<T> A中的每一行之前对IEnumerable<T> B中的所有行进行网格划分的最有效方法。


  例如:
  
  A = {A,B}
  
  B = {1,2,3}
  
  网格划分后:
  
  B = {A,1,B,2,A,3}

最佳答案

没有简单的解决方案,但类似的方法可能会起作用。在这里,模数运算符非常重要,以便用较少的项目重复列出的结果。

public static List<object> Mesh<T1, T2>(IEnumerable<T1> s1, IEnumerable<T2> s2)
{
     T1[] array1 = s1.ToArray();
     T2[] array2 = s2.ToArray();
     int length1 = array1.Length;
     int length2 = array2.Length;
     int maxLength = Math.Max(length1, length2);
     List<object> result = new List<object>();
     for (int i = 0; i < maxLength; i++)
     {
          result.Add(array1[i % length1]);
          result.Add(array2[i % length2]);
     }
     return result.
}

关于c# - 网格化IEnumerable <T>一起列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22037637/

相关文章:

c# - Linq - 从字典中获取所有键,其中值列表中的所有值都等于条件

c# - 有没有更简单的方法将此日期重新格式化为 c# 中的短日期?

c# - 在哪里存储可以在运行时修改的应用程序范围的设置?

c# - LINQ 到 SQL 查询

C# 锁(mylocker)不工作

c# - 如何使用 LINQ 比较日期和日期时间?

c# - C# MVC4.0 中的有效 Math.Random

c# - 在 DataContext 上调用 SubmitChanges 不会更新数据库

linq - 在EF 4.0中将字符串转换为Int

c# - 使用列模式从 SQL TABLE 创建 XML