LINQPad 5 - Release Notes

LINQPad 5 targets .NET Framework 4.6/4.7/4.8.
Version 5.52 requires .NET Framework 4.7.2 or 4.8, and is marked SE (Special Edition).

What's New in 5.52 (SE)

  • LINQPad 8's new Excel export engine has had most of its features backported into LINQPad 5, so you can generate native .xlsx files rather than relying on HTML or CSV. This ensures reliable handling of DateTimes and extended Unicode characters, the preservation of leading zeros in string data (such as phone numbers), and the generation of multi-sheet workbooks. You can export via .xlsx interactively by right-clicking a DataGrid, or programmatically by calling the .ToSpreadsheet extension method, followed by Open() or Save(...):
    customers.ToSpreadsheet().Open();
    
    salesQuery.ToSpreadsheet().Save ("salesQuery.xlsx");
    The Save method does not require Excel to be installed on the machine. To generate a multi-sheet workbook:
    customersQuery
        .ToSpreadsheet ("Customers")
        .AddSheet (ordersQuery, "Orders")
        .AddSheet (profitsQuery, "Profit and Loss")
        .Save (@"c:\temp\export.xlsx")
        .Open();
    Spreadsheets can also be populated manually:
    var sheet = new Worksheet        // Worksheet is in the LINQPad.Spreadsheet namespace.
    {
        [1, 1] = "Revenue",
        [1, 2] = "Expenses",
        [1, 4] = "Profit",
    
        [2, 1] = 150230,
        [2, 2] = 25010,
        [2, 4] = new Cell { Formula = "B1-B2" }
    };
    
    sheet.Open();
    // or sheet.Save ("filepath");
    Unlike with COM interop, no round-tripping takes place. For more samples, press Ctrl+F1 and type Excel.
  • LINQPad now actively monitors NuGet package references and dependencies for published vulnerabilities and gives warnings - both when choosing packages and executing queries. You can suppress warnings for specific (or all) packages in Edit | Preferences > Advanced > Execution.
  • The client libraries used by LINQPad's NuGet engine have been updated.
  • Autocompletion is now less intrusive when working with tuples.
  • The undo buffer size for the editor has been enlarged by a factor of 10.
  • The PowerPoint interop method (PowerPoint.ShowSlide) now works with modern versions of PowerPoint.

What's New in 5.48

This is the final release of LINQPad 5 to support .NET Framework 4.6. Subsequent LINQPad 5 updates will require .NET Framework 4.7.2 or .NET Framework 4.8. This is to allow a refresh of LINQPad 5's internal dependencies.

  • The code editor and results panel now support horizontal scrolling via Shift+MouseWheel.
  • A regression, when using a smart-tag to add references and namespaces at the same time, has been fixed.
  • The DEBUG symbol is now defined by default in C# queries.

What's New in 5.47

  • A graphics rendering issue triggered by Windows 11 22H2 has been fixed.
  • The "Replace All" editor command is now faster with large documents.
  • LINQPad's logic for setting column widths in data grids has been improved.
  • The selected query tab is now rendered more clearly in Windows 11. You can revert to the native flat-style renderer in Edit | Preferences > Advanced.
  • The vi emulator's ci{ command now positions the cursor favorably, and an intermittent problem in the implementation of 'kj' to escape insertion mode has been fixed.
  • End-of-line semantic parsing errors, such as missing semicolons, now generate red squigglies.
  • The Util.ToExpando method now has an includePrivate option to include non-public properties and fields.
  • The tooltips for null-valued booleans now display correctly in data grids.
  • The lambda translation tab now resets correctly before execution when previously unshown.
  • The maximum editable length for text fields in SQL databases (when editing data interactively) has been increased to 60,000 characters.
  • The Find dialog now works with SQL translation text, too. Just focus the control and use the standard menu options or shortcut keys (Ctrl+F, F3, Shift+F3 and Ctrl+I).
  • LINQPad 5's built-in ILSpy has been updated to V7.2.
  • A memory leak when working with F# queries has been fixed.

What's New in 5.46

  • LINQPad's NuGet package manager has been upgraded for improved package compatibility.
  • You can now view all queries in the Navigate To dialog (Ctrl+,), by clearing the search box.
  • You can now suppress the "// Define other methods and classes" comment when switching to C# Program mode via an option in Edit | Preferences > Advanced.
  • LINQPad 5's built-in ILSpy has been updated to V7.1.
  • The code editor's split button above the vertical scrollbar is now larger and better rendered.
  • LINQPad's Control class now has a CssClass property.
  • Execution times are now displayed for asynchronous queries that fault.
  • There's now limited support for the Microsoft.Data.SqlClient NuGet package.
  • A bug when joining SQL tables whose key column names differ only in case has been fixed.
  • A bug in the autocompletion listing when accessing an indexer that follows an invocation has been fixed.

What's New in 5.44

  • Parameter autocompletion now provides listings when calling base() and this() from the constructor.
  • Autocompletion tips on extension methods now include markup for the receiver.
  • LPRun now always uses UTF-8 text encoding instead of the Windows default.
  • The editor's Navigate Back feature Ctrl+Minus is now robust to text changes.
  • Customizations to the results style sheet can now be portablized.
  • There's a new Collapse all but this option on the connection treeview's context menu.
  • There's a new hotkey Alt+Shift+Y to toggle the enabling of 'My Extensions' for a query.
  • LINQPad can now dump objects with exception-throwing type or property attributes.
  • Pointer-type fields or properties are now automatically dereferenced when dumping.
  • LINQPad now supports Azure Synapse Analytics databases.
  • LINQPad now ships with ILSpy 6.2.
  • The Navigate to Query dialog (Ctrl+,) now includes a clickable Last Modified column.
  • Util.Highlight now has additional overloads for consistency with LINQPad 6.
  • A UI bug when canceling async queries has been fixed.
  • A bug in Util.Dif with extra list elements not highlighting has been fixed.
  • A bug when calling Util.Dif with Observables has been fixed.
  • The hotkeys for Copy/plain and Copy/markdown down work reliably.
  • Data grids with 3-state checkboxes now export correctly to Excel with "True" and "False".
  • The editor no longer adds spaces to blank lines when indenting a block.
  • A potential deadlock in Util.Run, which could cause it to hang, has been fixed.

What's New in 5.43

  • LINQPad 5 now lets you search for prerelease packages in custom ProGet feeds.
  • The 'Open in SSMS' feature is now more robust and works with the latest SSMS versions.
  • There's a new Util.WithHeading method to let you dump non-toplevel objects with headings.
  • You can now reliably dump HTML that contains a <script> tag - either via the Util.RawHtml method, or LINQPad's Literal control:
    var literal = new LINQPad.Controls.Literal ("script", "function foo(x) { alert(x) }").Dump();
    
    To invoke a Javascript function from your C# query:
    literal.HtmlElement.InvokeScript (true, "foo", "test");
    
    To help with debugging, you can write to LINQPad's output window from a script as follows:
    external.log('message')
    LINQPad 6 has additional features to help with scripting, including the ability to inject scripts and styles into the <head> element.
  • A memory leak that would sometimes surface when keeping LINQPad running over long periods of time has been fixed.
  • A bug which would sometimes cause the 'Add Namespace' and 'Implement Interface' code fixes to fail has been fixed.
  • A StringBuilder fragmentation issue that can lead to poor editor performance after a long series of edits has been fixed.
  • An intermittent ArgumentOutOfRangeException when dumping to data grids has been fixed.
  • A parameter autocompletion bug when extension method classes are present has been fixed.

Download LINQPad 5 - Standard X86

The standard X86 build lets you reference 32-bit assemblies.

Download LINQPad 5 (installer)
Download LINQPad 5 (xcopy-deploy)

Download LINQPad 5 - X64

The 64-bit build ("Any CPU") lets you use all available memory.

Download LINQPad 5 X64 (installer)
Download LINQPad 5 X64 (xcopy-deploy)

LINQPad 5 - Latest Beta

LINQPad 5.52.01 is now RTM.

LINQPad 5 - End-of-Life Versions

The following legacy builds run on .NET Framework 4.6. Do not use if you have .NET Framework 4.7 or .NET Framework 4.8. They do not include security updates.

Download LINQPad 5.48.01 (Standard X86)
Download LINQPad 5.48.01 (Any CPU / X64)
Download LINQPad 5.48.01 Installer (Standard X86)
Download LINQPad 5.48.01 Installer (Any CPU / X64)