add-type -Language CSharpVersion3 -TypeDefinition @"
public class pack_code
{
public pack_code() {}
public string code { get; set; }
public string type { get; set; }
}
"@
$a = New-Object pack_code
$a.code = "3"
$a.type = "5"
$b = New-Object pack_code
$b.code = "2"
$b.type = "5"
$c = New-Object pack_code
$c.code = "2"
$c.type = "5"
$d = New-Object pack_code
$d.code = "1"
$d.type = "1"
$codes = New-Object 'System.Collections.Generic.List[object]'
$codes.add($a)
$codes.add($b)
$codes.add($c)
$codes.add($d)
Is there a way to select distinct from $codes and select the objects where type equals 1? How can I use LINQ with PowerShell?
4 Réponses :
Pour une utilisation distincte Utilisez le Select-Object-Object Code> Cmdlet (Aliasé sur Sélectionnez CODE>) avec le paramètre unique, par exemple: PS> $codes | where {$_.Type -eq '1'}
Qu'est-ce que Keith a dit. De plus, a changé le constructeur de votre C # et utilisé le paramètre -unique sur la cmdlet de tri.
Question simple, réponse simple:
C'est prometteur, mais comme écrit votre code ne fonctionnera pas, car il manque une logique de comparaison personnalisée afin de reconnaître duplicata [pack_code] code> instances; En d'autres termes: votre appel est un non-op efficace.
La réponse utile de Doug Finke et Réponse utile de Keith Hill vous montrer des analogues PowerShell-idiomatic au Dans La solution ci-dessous montre que LINQ peut être utilisé pour résoudre Votre problème, mais montre aussi que ce faisant est .Distion () code> et .where () code> méthodes LINQ.