??????
public static class StringBuilderExtensions
{
public static StringBuilder AppendFormattedLine(this StringBuilder @this?? string format?? prams object[] args) => @this.AppendFormat(format?? args).AppendLine();
public static StringBuilder AppendLineWhen(this StringBuilder @this?? Func<bool> predicate?? string value) =>
predicate()
? @this.AppendLine(value)
: @this;
public static StringBuilder AppendWhen(this StringBuilder @this?? Func<bool> predicate?? Func<StringBuilder?? StringBuilder> fn) =>
predicate()
? fn(@this)
: @this;
}
private static string BuilderSelectBox(IDictionary<int?? string> options?? string id?? bool includeUnknown)
{
var html = new StringBuilder()
.AppendFormattedLine("<select id="{0}" name="{0}">"?? id)
.AppendWhen(
() => includeUnknown??
sb => sb.AppendLine(" <option>Unknown</option>")
);
foreach(var opt in options)
{
html.AppendFormattedLine(" <option value="{0}">{1}</option>"?? opt.Key?? opt.Value);
}
html.AppendLine("</select>");
return html.ToString();
}
?????????
????foreach(var opt in options)
????{
????html.AppendFormattedLine(" <option value="{0}">{1}</option>"?? opt.Key?? opt.Value);
????}
??????????????з???????StringBuilder?????
public static class StringBuilderExtensions
{
public static StringBuilder AppendFormattedLine(this StringBuilder @this?? string format?? prams object[] args) => @this.AppendFormat(format?? args).AppendLine();
public static StringBuilder AppendLineWhen(this StringBuilder @this?? Func<bool> predicate?? string value) =>
predicate()
? @this.AppendLine(value)
: @this;
public static StringBuilder AppendWhen(this StringBuilder @this?? Func<bool> predicate?? Func<StringBuilder?? StringBuilder> fn) =>
predicate()
? fn(@this)
: @this;
public static StringBuilder AppendSequence<T>(this StringBuilder @this?? IEnumerable<T> seq?? Func<StringBuilder?? T?? StringBuilder> fn) => seq.Aggregate(@this?? fn);
}
private static string BuilderSelectBox(IDictionary<int?? string> options?? string id?? bool includeUnknown)
{
var html = new StringBuilder()
.AppendFormattedLine("<select id="{0}" name="{0}">"?? id)
.AppendWhen(
() => includeUnknown??
sb => sb.AppendLine(" <option>Unknown</option>")
)
.AppendSequence(options?? (sb?? opt) => sb.AppendFormattedLine(" <option value="{0}">{1}</option>"?? opt.Key?? opt.Value))
.AppendLine("</select>")
.ToString();
}