FormattableSb 2.0.17
dotnet add package FormattableSb --version 2.0.17
NuGet\Install-Package FormattableSb -Version 2.0.17
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FormattableSb" Version="2.0.17" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FormattableSb --version 2.0.17
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FormattableSb, 2.0.17"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FormattableSb as a Cake Addin #addin nuget:?package=FormattableSb&version=2.0.17 // Install FormattableSb as a Cake Tool #tool nuget:?package=FormattableSb&version=2.0.17
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
FormattableSb
A mutable FormattableString class:
List<DateTime> summerDates = GetSummerDates();
FormattableStringBuilder sqlBuilder = new FormattableStringBuilder()
.AppendInterpolated($"INSERT INTO dbo.VacationDates (Date)")
.AppendLine()
.AppendInterpolated($"VALUES ({summerDates.First()})");
foreach (DateTime date in summerDates.Skip(1))
{
sqlBuilder
.AppendInterpolated($",")
.AppendLine()
.AppendInterpolated($"({date})");
}
// sql.Format:
// INSERT INTO dbo.VacationDates (Date)
// VALUES ({0}),
// ({1}),
// ({2}),
// ...
// sql.GetArguments():
// [
// System.DateTime,
// System.DateTime,
// System.DateTime,
// ...
// ]
FormattableString sql = sqlBuilder.ToFormattableString();
static List<DateTime> GetSummerDates()
{
DateTime startDate = new(2040, 6, 20);
DateTime endDate = new(2040, 9, 22);
List<DateTime> dates = new();
for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
{
dates.Add(date);
}
return dates;
}
With EF Core:
using VacationingContext context = new();
int rowsAffected = context.Database.ExecuteSql(sql);
Features:
- Adheres to the C# language specification
- Can be used when you want to modify a FormattableString
- Preserves alignment and format strings
API:
AppendInterpolated:
/// <summary>
/// Appends the specified interpolated string to the end of the composite format string,
/// replacing its arguments with placeholders and adding them as objects.
/// </summary>
/// <param name="handler">The interpolated string to append, along with the arguments.</param>
/// <returns>A reference to this instance after the append operation has completed.</returns>
public FormattableStringBuilder AppendInterpolated([InterpolatedStringHandlerArgument("")] ref AppendInterpolatedHandler handler)
AppendLine:
/// <summary>
/// Appends the default line terminator to the end of the composite format string.
/// </summary>
/// <returns>A reference to this instance after the append operation has completed.</returns>
public FormattableStringBuilder AppendLine()
ToFormattableString:
/// <summary>
/// Creates a <see cref="FormattableString"/> from this builder.
/// </summary>
/// <returns>The object that represents the composite format string and its arguments.</returns>
public FormattableString ToFormattableString()
Setup:
- Install FormattableSb via NuGet Package Manager, Package Manager Console or dotnet CLI:
Install-Package FormattableSb
dotnet add package FormattableSb
Credits:
- Thanks to Stephen Toub for the implementation
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.17 | 1,172 | 11/17/2023 |
2.0.16 | 187 | 9/2/2023 |
2.0.15 | 149 | 9/2/2023 |
2.0.14 | 184 | 7/3/2023 |
2.0.13 | 178 | 7/1/2023 |
2.0.12 | 151 | 5/31/2023 |
2.0.11 | 201 | 4/7/2023 |
2.0.10 | 224 | 3/9/2023 |
2.0.9 | 226 | 3/9/2023 |
2.0.8 | 235 | 3/9/2023 |
2.0.7 | 321 | 1/19/2023 |
2.0.6 | 302 | 12/31/2022 |
2.0.5 | 307 | 12/23/2022 |
2.0.4 | 308 | 12/15/2022 |
2.0.3 | 327 | 11/26/2022 |
2.0.2 | 328 | 11/26/2022 |
2.0.1 | 395 | 10/21/2022 |
2.0.0 | 392 | 10/15/2022 |
1.0.5 | 386 | 10/5/2022 |
1.0.4 | 384 | 10/1/2022 |
1.0.3 | 401 | 9/28/2022 |
1.0.2 | 402 | 9/27/2022 |
1.0.1 | 424 | 9/27/2022 |
1.0.0 | 397 | 9/27/2022 |