Skip to content

LINQPad Feature Suggestions

More than 100 LINQPad features are a direct result of customer feedback! This is the official forum for posting and voting on ideas – we want to hear from you!

LINQPad Feature Suggestions

Categories

1187 results found

  1. As a developer I often have to rearrange code lines. Therefore it would be a useful feature to be able to move the current line / currently selected lines up/down, the same way as it is possible in Visual Studio or Notepad++.

    89 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  2. Add "My Extensions" to search results of the Navigate to Query dialog

    1 vote
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  3. Related to https://linqpad.uservoice.com/forums/18302-linqpad-feature-suggestions/suggestions/3613525-allow-users-to-disable-or-change-the-upload-to-ins#comments , please add an option (Preferences - Advanced) to disable this functionality completely. Disabling the shortcut is not good enough in some professional environments

    7 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  4. It would be nice if FSharp Option types would render as (value | null), rather than, at the moment, as a nested table with (Some(value) | None)

    This would be consistent with the rendering for Nullable<T>, which prefers readability over being totally strict around the type system.

    I appreciate you don't want to add an endless list of special cases, but this would be really useful.

    3 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  5. I know not everyone uses Resharper, but a lot of people do. It'd be really nice to have an option to map keyboard shortcuts for any of the new refactoring or navigation features to the standard resharper keys.

    I'd also like to see goto definition and goto declaration in the right click menu as I use these all the time (I believe VS2015 now has the equivalent of these anyway).

    I'm so tied to this product that I even find myself trying to use the shortcut keys in Word :)

    Thank You!

    29 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  6. It is currently impossible to distinguish between a NULL value and a string that happens to be spelled, "null" because LinqPAD displays "null" (lowercase) for both of them. SSMS displays NULL (uppercase) for NULL values, and to differentiate between NULL values and a string spelled, "NULL", SSMS highlights actual NULL values with a special background color (a soft yellow). LinqPAD should do the same thing, or something similar, to make it more obvious if the value is NULL or a string that just happens to be spelled "NULL".

    4 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  7. Visual Studio and command-line nuget share the set of configured nuget servers (it goes into %appdata%\nuget\nuget.config).

    It'd be nice if Linqpad honored this also, rather than having to (re)configure the nuget servers separately which is really boring.

    If keeping a separate list is seen to be desirable, what about an 'import from nuget.config' button to bring them in as a once-off?

    13 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  8. Dump if predicate is true

    1 vote
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  9. When we create a Linq expression or whatnot, the SQL generated aliases our tables to "t0", "t1" - etc. There are many times it would be nice if the alias either maintained the variable we used in our query (table=> table.ColName) or allowed us to define aliases in some other, metadata file.

    Thanks!

    9 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  10. When using and object initializer on a property within a parent object initializer, the intellisense show the global intellisense list.

    This code shows the issue:

    void Main()
    {
    new Foo
    { // Placing cursor after this brace and pressing space gives a drop-down list with "Qux", as expected
    Bar =
    { // Placing cursor after this brace and pressing space give th same list as Ctrl+Space in an empty query. Expected a list with "Baz".
    }
    }.Dump();
    }

    // Define other methods and classes here
    class Foo
    {
    public Foo()
    {
    Bar = new Bar();
    }

    public Bar Bar {
    3 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  11. Some package, like "Microsoft.ChakraCore", "Libuv", or "JavaScriptEngineSwitcher.ChakraCore.Native.win-x64", does not have .NET Assembly, instead, they provide a native assembly to PInvoke.

    However, this cannot be done in LINQPad, when installing these packages, an error message "There are no usable .NET assemblies in package 'XYZ'" was shown.

    Please do not prevent us to do that, at least popup a warning dialog saying something like "Looks like you're not installing the .NET Assembly, go on?", and gives us a option to proceed the PInvoke test.

    Related topic: http://forum.linqpad.net/discussion/1680/please-dont-prevent-installing-native-package-in-linqpad#latest

    6 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  12. A technique I use to quickly test an idea is to have a dummy "test" method that calls a method I'm working on. Used in conjunction with NCrunch, and Console.WriteLine(), I can make changes to the method and immediately see the results without having to save/recompile/run (continuous testing).

    I think it would be great if LInqPad also allows for this kind of cycle. Being able to see the progress of a script without have to stop and run every time making a change can be a huge productivity booster - especially when incrementally building an algorithm.

    I think it would…

    1 vote
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  13. Drag-n-drop a CSV file to the LINQPad window to silently create an IQueryable object populated with its values and insert a code reference at the cursor point where the drop operation completes.

    1 vote
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  14. Dim wnd As New NativeWindow()
    wnd.AssignHandle(Process.GetProcessById (Util.HostProcessID).MainWindowHandle)

    'Add the above code or the c# version of it to a Util function that lets us pop up dialogs that show above the linqpadwindow.
    '_____
    Dim browser = New FolderBrowserDialog With {.ShowNewFolderButton = False, .SelectedPath = pth}
    If browser.ShowDialog(wnd) = DialogResult.OK Then
    pth = browser.SelectedPath
    End If

    3 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  15. It would be great if LinqPad query can access internal members of referenced libraries without changing the referenced libraries to add InternalsVisibleTo attribute. Instead we could use the reverse attribute IgnoresAccessChecksToAttribute in the query to allow it to access internal members of any specified libraries. You can find detailed information on how this can be done here: https://github.com/aelij/IgnoresAccessChecksToGenerator and https://github.com/filipw/Strathweb.Samples.CSharp.NoVisibilityChecks

    3 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  16. 1 vote
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  17. Currently we resort to reflection on the LinqPad internal classes to extract some very useful properties. One of these features is IsAutomated property of the internal static Program class, which is similar to #if CMD but is more practical because you can pass it around. Besides it's impossible to determine if a script it running under lprun inside MyExtensions using the said #if CMD directive. Because it is a compilation directive.

    1 vote
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  18. I don't know if this is feasible, but it would make LINQPad orders of magnitude more useful to those of us working in multiple target platforms.

    49 votes
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  19. It is time to move to the next level: cross-server or cross-domain queries, for a truly great orchestration experience.

    I have experimented with this and it's working nicely:

    dynamic odata = Activator.CreateInstance(Type.GetType("LINQPad.User.DemoService, odata", true), new Uri("https://services.odata.org/V3/OData/OData.svc/"));
    ((object)odata.Persons).Dump();
    dynamic a = Activator.CreateInstance(Type.GetType("LINQPad.User.TypedDataContext, a", true));
    ((object)a.Persons).Dump();
    dynamic db = Activator.CreateInstance(Type.GetType("LINQPad.User.TypedDataContext, db", true));
    ((object)db.Products).Dump();

    I'm specifically referring to this line in the FAQ (https://www.linqpad.net/FAQ.aspx):
    "The databases that you query must reside on the same server."

    That's a major limitation.

    Possible solutions:
    1. Unique data context class names in the LINQPad.User namespace.
    2. extern alias functionality?
    3. Uniquely nest all classes…

    1 vote
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  20. Basically you need to change the ProcessStartInfo.StandardOutputEncoding with the supplied codepage, or get the default from registry. Localized versions of Windows will print gibberish with basic operations like Util.Cmd("ping localhost")

    1 vote
    Vote

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Admin →
    How important is this to you?

    We're glad you're here

    Please sign in to leave feedback

    Signed in as (Sign out)
  • Don't see your idea?