C# 将列标题添加到HTML表(列表添加到HTML表)
当前代码运行良好。但是,缺少列标题。在当前示例中,C# 将列标题添加到HTML表(列表添加到HTML表),c#,html,C#,Html,当前代码运行良好。但是,缺少列标题。在当前示例中,NRO、NRO1、SNAME是列标题 我知道应该将添加到现有方法中,但很难弄清楚如何添加 <tr> <th>NRO</th> <th>NRO1</th> <th>SNAME</th> </tr> 我试着这样做: var HTML = GetMyTable(duplicates, x => x.NRO,
NRO、NRO1、SNAME
是列标题
我知道应该将
添加到现有方法中,但很难弄清楚如何添加
<tr>
<th>NRO</th>
<th>NRO1</th>
<th>SNAME</th>
</tr>
我试着这样做:
var HTML = GetMyTable(duplicates, x => x.NRO, x => x.NRO1, x => x.SNAME);
public static string GetMyTable<T>(IEnumerable<T> list, params Func<T, object>[] fxns)
{
StringBuilder sb = new StringBuilder();
sb.Append("<table>\n");
sb.Append("<tr>\n");
sb.Append("<th>NRO</th>\n");
sb.Append("<th>NRO1</th>\n");
sb.Append("<th>SNAME</th>\n");
sb.Append("</tr>\n");
foreach (var item in list)
{
sb.Append("<tr>\n");
foreach (var fxn in fxns)
{
sb.Append("<td>");
sb.Append(fxn(item));
sb.Append("</td>");
}
sb.Append("</tr>\n");
}
sb.Append("</table>");
return sb.ToString();
}
var html = GetMyTable(duplicates,
x => (x?.NRO, nameof(x.NRO)),
x => (x?.NRO1, nameof(x.NRO1)),
x => (x?.SNAME, nameof(x.SNAME))
);
公共静态字符串GetMyTable(IEnumerable列表,params Func[]fxns)
{
StringBuilder sb=新的StringBuilder();
某人附加(“\n”);
某人附加(“\n”);
sb.追加(“NRO\n”);
sb.追加(“NRO1\n”);
sb.追加(“SNAME\n”);
某人附加(“\n”);
foreach(列表中的变量项)
{
某人附加(“\n”);
foreach(fxns中的变量fxn)
{
某人加上(“”);
某人追加(fxn(项目));
某人加上(“”);
}
某人附加(“\n”);
}
某人加上(“”);
使某人返回字符串();
}
是否可以为标题创建一个循环,这样就不需要为每个表分别分配标题?如果要在循环中添加标题,只需在创建表标记时创建一次即可
public static string GetMyTable<T>(IEnumerable<T> list, params Func<T, object>[] fxns)
{
StringBuilder sb = new StringBuilder();
sb.Append("<table>\n");
// this needs to be outside the loop
sb.Append("<tr>\n");
sb.Append("<th>NRO</th>\n");
sb.Append("<th>NRO1</th>\n");
sb.Append("<th>SNAME</th>\n");
sb.Append("</tr>\n");
foreach (var item in list)
{
sb.Append("<tr>\n");
foreach (var fxn in fxns)
{
sb.Append("<td>");
sb.Append(fxn(item));
sb.Append("</td>");
}
sb.Append("</tr>\n");
}
sb.Append("</table>");
return sb.ToString();
}
公共静态字符串GetMyTable(IEnumerable列表,params Func[]fxns)
{
StringBuilder sb=新的StringBuilder();
某人附加(“\n”);
//这需要在循环之外
某人附加(“\n”);
sb.追加(“NRO\n”);
sb.追加(“NRO1\n”);
sb.追加(“SNAME\n”);
某人附加(“\n”);
foreach(列表中的变量项)
{
某人附加(“\n”);
foreach(fxns中的变量fxn)
{
某人加上(“”);
某人追加(fxn(项目));
某人加上(“”);
}
某人附加(“\n”);
}
某人加上(“”);
使某人返回字符串();
}
如果要在循环中添加标题,只需在创建表标记时创建一次即可
public static string GetMyTable<T>(IEnumerable<T> list, params Func<T, object>[] fxns)
{
StringBuilder sb = new StringBuilder();
sb.Append("<table>\n");
// this needs to be outside the loop
sb.Append("<tr>\n");
sb.Append("<th>NRO</th>\n");
sb.Append("<th>NRO1</th>\n");
sb.Append("<th>SNAME</th>\n");
sb.Append("</tr>\n");
foreach (var item in list)
{
sb.Append("<tr>\n");
foreach (var fxn in fxns)
{
sb.Append("<td>");
sb.Append(fxn(item));
sb.Append("</td>");
}
sb.Append("</tr>\n");
}
sb.Append("</table>");
return sb.ToString();
}
公共静态字符串GetMyTable(IEnumerable列表,params Func[]fxns)
{
StringBuilder sb=新的StringBuilder();
某人附加(“\n”);
//这需要在循环之外
某人附加(“\n”);
sb.追加(“NRO\n”);
sb.追加(“NRO1\n”);
sb.追加(“SNAME\n”);
某人附加(“\n”);
foreach(列表中的变量项)
{
某人附加(“\n”);
foreach(fxns中的变量fxn)
{
某人加上(“”);
某人追加(fxn(项目));
某人加上(“”);
}
某人附加(“\n”);
}
某人加上(“”);
使某人返回字符串();
}
如果我理解正确,下面的代码怎么样
public static string GetMyTable<T>(IEnumerable<T> list,
params Func<T, (object, string)>[] fxns)
{
var sb = new StringBuilder();
sb.Append("<table>\n");
sb.Append("<tr>\n");
foreach (var fxn in fxns)
sb.Append("<th>").Append(fxn(default).Item2).AppendLine("</th>");
sb.Append("</tr>\n");
foreach (var item in list)
{
sb.Append("<tr>\n");
foreach (var fxn in fxns)
{
sb.Append("<td>");
sb.Append(fxn(item).Item1);
sb.Append("</td>");
}
sb.Append("\n</tr>\n");
}
sb.Append("</table>");
return sb.ToString();
}
如果我理解正确,下面的代码如何
public static string GetMyTable<T>(IEnumerable<T> list,
params Func<T, (object, string)>[] fxns)
{
var sb = new StringBuilder();
sb.Append("<table>\n");
sb.Append("<tr>\n");
foreach (var fxn in fxns)
sb.Append("<th>").Append(fxn(default).Item2).AppendLine("</th>");
sb.Append("</tr>\n");
foreach (var item in list)
{
sb.Append("<tr>\n");
foreach (var fxn in fxns)
{
sb.Append("<td>");
sb.Append(fxn(item).Item1);
sb.Append("</td>");
}
sb.Append("\n</tr>\n");
}
sb.Append("</table>");
return sb.ToString();
}
谢谢你!我已经弄明白了。然而,这意味着该方法将不适用于任何表,因为头是在方法本身中指定的。也可以为标题创建一个循环吗?谢谢!我已经弄明白了。然而,这意味着该方法将不适用于任何表,因为头是在方法本身中指定的。是否也可以为标题创建一个循环?