将项目分成列

use*_*271 3 c#

我有一个动态数量的项目,最多分为 4 列,然后使用正确的 html 格式,让我们说:

string[] s = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; // from 1 to n itens
Run Code Online (Sandbox Code Playgroud)

格式化成这个 html:

<ul>
  <li>
     1
     2
     3
  </li>
  <li>
     4
     5
  </li>
  <li>
     6
     7
  </li>
  <li>
     8
     9
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

编辑:我的网站问题:

如果你有单词作为 itens,这样放置 itens 会将单词组织成按字母顺序排列的列(人们以这种方式阅读),而不是按字母顺序排列的行。喜欢:

a d g i
b e h j
c f 
Run Code Online (Sandbox Code Playgroud)

代替:

a b c d
e f g h
i j
Run Code Online (Sandbox Code Playgroud)

yam*_*men 5

假设您想平均分配任何剩余部分,这将完成这项工作:

string[] s = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };

// create the 4 buckets with equal distribution
var buckets = Enumerable.Repeat(s.Length / 4, 4).ToArray();

// distribute any remainders evenly starting from the first bucket
var rem = s.Length % 4; 
for (var i = 0; i < rem; i++) buckets[i]++;

var idx = 0;
Console.WriteLine("<ul>");
foreach (var bucket in buckets)
{
    Console.WriteLine("\t<li>");
    foreach (var _ in Enumerable.Range(1, bucket))
    {
        Console.WriteLine("\t\t{0}", s[idx++]);
    }
    Console.WriteLine("\t</li>");
}
Console.WriteLine("</ul>");
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,这是一些边缘情况返回的内容。

{} = 列表中有 4 个空项目

{ "1", "2", "3"} = 1, 2, 3 前三项,第四项为空

{ "1", "2", "3", "4", "5"} = 第一项为 1, 2,其他项为 3, 4, 5