René's URL Explorer Experiment


Title: Close the feature gap between the `Where-Object` cmdlet and the `.Where()` array method, introduce -First, -Last, ... switches · Issue #13834 · PowerShell/PowerShell · GitHub

Open Graph Title: Close the feature gap between the `Where-Object` cmdlet and the `.Where()` array method, introduce -First, -Last, ... switches · Issue #13834 · PowerShell/PowerShell

X Title: Close the feature gap between the `Where-Object` cmdlet and the `.Where()` array method, introduce -First, -Last, ... switches · Issue #13834 · PowerShell/PowerShell

Description: Summary of the new feature/enhancement Update for clarification: The gist of this proposal is to bring valuable filter functionality that currently only exists in the in-memory .Where() array method to its pipeline counterpart, Where-Obj...

Open Graph Description: Summary of the new feature/enhancement Update for clarification: The gist of this proposal is to bring valuable filter functionality that currently only exists in the in-memory .Where() array metho...

X Description: Summary of the new feature/enhancement Update for clarification: The gist of this proposal is to bring valuable filter functionality that currently only exists in the in-memory .Where() array metho...

Opengraph URL: https://github.com/PowerShell/PowerShell/issues/13834

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Close the feature gap between the `Where-Object` cmdlet and  the `.Where()` array method, introduce -First, -Last, ... switches","articleBody":"## Summary of the new feature/enhancement\r\n\r\n_Update for clarification_: **The gist of this proposal is to bring valuable filter functionality that currently only exists in the _in-memory_ `.Where()` array method to its _pipeline_ counterpart, `Where-Object`.**\r\n(Always using `.Where()` isn't an option with large input sets, because you'd have to collect all input in memory first.)\r\n\r\n\r\nThe [`.Where()` array method](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Arrays#where), which is the in-memory equivalent of the pipeline-based `Where-Object` cmdlet, offers a number of additional features, such as the ability to optionally stop matching after the first match is found, which can be an important optimization technique, and the ability to output all objects that come before/after a matching one:\r\n\r\n`First` / `-First` example:\r\n\r\n```powershell\r\n# OK - very fast, because - despite the large input collection - processing stops after the first match.\r\n(1..1e6).Where({ $_ -eq 10 }, 'First')  # -\u003e 10\r\n\r\n# WISHFUL THINKING: Add a -First switch (among several others - see below).\r\n1..1e6 | Where-Object { $_ -eq 10 } -First\r\n\r\n# Without it, ALL elements are processed - SLOW\r\n1..1e6 | Where-Object { $_ -eq 10 }\r\n\r\n# Current workaround is cumbersome.\r\n1..1e6  | Where-Object { $_ -eq 10 } | Select-Object -First 1\r\n```\r\n\r\n`SkipUntil` / `-SkipUntil` example:\r\n\r\n```powershell\r\n(1, 2, 42, 43).Where({ $_ -eq 42 }, 'SkipUntil') # -\u003e 42, 43\r\n\r\n# WISHFUL THINKING: Add a -SkipUntil switch.\r\n1, 2, 42, 43 | Where-Object { $_ -eq 42 } -SkipUntil\r\n```\r\n\r\nBased on the current `.Where()` features, the following switches should be introduced with the same behavior, mirroring the [`WhereOperatorSelectionMode`](https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.whereoperatorselectionmode) enumeration values:\r\n\r\n`-First`, `-Last`, `-SkipUntil`, `-Until`, `-Split`\r\n\r\nNote:\r\n\r\n*  `-Split` partitions the input into two and returns two collections, so it would in effect require collecting all input in memory first before producing output, which would have to be clearly documented.\r\n\r\n* The `.Where()` method has an optional numeric parameter, `numberToReturn`, that modifies the operations, such as `2` with `First` returning the first _two_ matches; since we don't have a syntax for switches with _optional (non-Boolean) arguments_  for commands (see #12104), we have the following options:\r\n\r\n   * Option A: Simply omit this aspect of the functionality and invariably default to `1`, which is likely fine in the majority of cases; if a different number is needed, `Select-Object -First/-Last $n` can be piped to.\r\n\r\n   * Option B: Implement `-First` and `-Last not as _switches, but as `-First \u003cint\u003e` and `-Last \u003cint\u003e` ; the potential downside is that a number argument is then _mandatory_.\r\n\r\n   * Option C: Given that `numberToReturn` also modifies all other functionality - though there's likely less of a need for that -  implement a separate `-Count \u003cint\u003e` parameter, which in the absence of any of the switches would imply `-First`.\r\n\r\n* For these behaviors to be implemented efficiently, they have to stop the pipeline on demand, as `Select-Object` already does. However, the latter does so in a problematic fashion - not giving other cmdlets a chance to run their `End` blocks - which should be addressed (independently) as well: see #7930\r\n\r\n\r\n**On a meta note: You can skip the obsolete comments that follow and resume reading at [this comment](https://github.com/PowerShell/PowerShell/issues/13834#issuecomment-714686798).**","author":{"url":"https://github.com/mklement0","@type":"Person","name":"mklement0"},"datePublished":"2020-10-22T14:22:30.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":32},"url":"https://github.com/13834/PowerShell/issues/13834"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:f8f211e2-bc56-363a-2622-2a03bfbb02af
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idC1C6:1DE205:15D415C:1F23DED:6A5A29F6
html-safe-nonce682a3b19db990428db988cea10fa36784ddcfb23679a2d80ef62cae16462cf95
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMUM2OjFERTIwNToxNUQ0MTVDOjFGMjNERUQ6NkE1QTI5RjYiLCJ2aXNpdG9yX2lkIjoiMzY1Mzg5ODA5OTc3MTQ1MTg5NCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmaccdd03a7834c5d5e3c2db5bdcd4e09f6cea4dddec49ca6cd75112d012ffe5b662
hovercard-subject-tagissue:727436890
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/PowerShell/PowerShell/13834/issue_layout
twitter:imagehttps://opengraph.githubassets.com/be31759b65b425242f580f6f12cce3a23564a8a676dcde7c13cdbd31b62fc852/PowerShell/PowerShell/issues/13834
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/be31759b65b425242f580f6f12cce3a23564a8a676dcde7c13cdbd31b62fc852/PowerShell/PowerShell/issues/13834
og:image:altSummary of the new feature/enhancement Update for clarification: The gist of this proposal is to bring valuable filter functionality that currently only exists in the in-memory .Where() array metho...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamemklement0
hostnamegithub.com
expected-hostnamegithub.com
None19c67ad7579d2401ff06e88a32ef45460fbb40fab3191c7f7582d5e166f326fc
turbo-cache-controlno-preview
go-importgithub.com/PowerShell/PowerShell git https://github.com/PowerShell/PowerShell.git
octolytics-dimension-user_id11524380
octolytics-dimension-user_loginPowerShell
octolytics-dimension-repository_id49609581
octolytics-dimension-repository_nwoPowerShell/PowerShell
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id49609581
octolytics-dimension-repository_network_root_nwoPowerShell/PowerShell
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasea3dea2706161c733403beb02e41d5765d358d44e
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/PowerShell/PowerShell/issues/13834#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FPowerShell%2FPowerShell%2Fissues%2F13834
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FPowerShell%2FPowerShell%2Fissues%2F13834
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=PowerShell%2FPowerShell
Reloadhttps://github.com/PowerShell/PowerShell/issues/13834
Reloadhttps://github.com/PowerShell/PowerShell/issues/13834
Reloadhttps://github.com/PowerShell/PowerShell/issues/13834
Please reload this pagehttps://github.com/PowerShell/PowerShell/issues/13834
PowerShell https://github.com/PowerShell
PowerShellhttps://github.com/PowerShell/PowerShell
Notifications https://github.com/login?return_to=%2FPowerShell%2FPowerShell
Fork 8.4k https://github.com/login?return_to=%2FPowerShell%2FPowerShell
Star 54.5k https://github.com/login?return_to=%2FPowerShell%2FPowerShell
Code https://github.com/PowerShell/PowerShell
Issues 1.2k https://github.com/PowerShell/PowerShell/issues
Pull requests 287 https://github.com/PowerShell/PowerShell/pulls
Discussions https://github.com/PowerShell/PowerShell/discussions
Actions https://github.com/PowerShell/PowerShell/actions
Projects https://github.com/PowerShell/PowerShell/projects
Security and quality 3 https://github.com/PowerShell/PowerShell/security
Insights https://github.com/PowerShell/PowerShell/pulse
Code https://github.com/PowerShell/PowerShell
Issues https://github.com/PowerShell/PowerShell/issues
Pull requests https://github.com/PowerShell/PowerShell/pulls
Discussions https://github.com/PowerShell/PowerShell/discussions
Actions https://github.com/PowerShell/PowerShell/actions
Projects https://github.com/PowerShell/PowerShell/projects
Security and quality https://github.com/PowerShell/PowerShell/security
Insights https://github.com/PowerShell/PowerShell/pulse
Close the feature gap between the Where-Object cmdlet and the .Where() array method, introduce -First, -Last, ... switcheshttps://github.com/PowerShell/PowerShell/issues/13834#top
Issue-Enhancementthe issue is more of a feature request than a bughttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Issue-Enhancement%22
Resolution-No ActivityIssue has had no activity for 6 months or morehttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Resolution-No%20Activity%22
WG-Cmdlets-Corecmdlets in the Microsoft.PowerShell.Core modulehttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22WG-Cmdlets-Core%22
https://github.com/mklement0
mklement0https://github.com/mklement0
on Oct 22, 2020https://github.com/PowerShell/PowerShell/issues/13834#issue-727436890
.Where() array methodhttps://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Arrays#where
WhereOperatorSelectionModehttps://docs.microsoft.com/en-us/dotnet/api/system.management.automation.whereoperatorselectionmode
Feature Request: Variable Parameter with switch-like capability #12104https://github.com/PowerShell/PowerShell/issues/12104
Select-Object -First X skips End{ } blocks of previous cmdlets #7930https://github.com/PowerShell/PowerShell/issues/7930
this commenthttps://github.com/PowerShell/PowerShell/issues/13834#issuecomment-714686798
Issue-Enhancementthe issue is more of a feature request than a bughttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Issue-Enhancement%22
Resolution-No ActivityIssue has had no activity for 6 months or morehttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Resolution-No%20Activity%22
WG-Cmdlets-Corecmdlets in the Microsoft.PowerShell.Core modulehttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22WG-Cmdlets-Core%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.