Méthodes LINQPad [extension]

.net c# entity-framework linqpad linq-to-sql

Question

Quelqu'un at-il une liste complète des méthodes d’extension LINQPad et des méthodes telles que

.Dump()

SubmitChanges()

Réponse acceptée

LINQPad définit deux méthodes d'extension (dans LINQPad.Extensions), à savoir Dump() et Disassemble() . Dump() écrit dans la fenêtre de sortie à l'aide du formateur de sortie de LINQPad et est surchargé pour vous permettre de spécifier un en-tête:

typeof (int).Assembly.Dump ();
typeof (int).Assembly.Dump ("mscorlib");

Vous pouvez également spécifier une profondeur de récursivité maximale pour remplacer la valeur par défaut de 5 niveaux:

typeof (int).Assembly.Dump (1);              // Dump just one level deep
typeof (int).Assembly.Dump (7);              // Dump 7 levels deep
typeof (int).Assembly.Dump ("mscorlib", 7);  // Dump 7 levels deep with heading

Disassemble () désassemble toutes les méthodes en IL et renvoie le résultat sous forme de chaîne:

typeof (Uri).GetMethod ("GetHashCode").Disassemble().Dump();

En plus de ces deux méthodes d'extension, LINQPad.Util contient des méthodes statiques utiles. Celles-ci sont documentées dans l'auto-complétion et comprennent:

  • Cmd - exécute une commande shell ou un programme externe
  • CreateXhtmlWriter - crée un rédacteur de texte qui utilise le formateur Dump () de LINQPad
  • SqlOutputWriter - retourne le rédacteur de texte qui écrit dans la fenêtre de sortie SQL
  • GetMyQueries , GetSamples - renvoie une collection d'objets représentant vos requêtes / échantillons enregistrés (pour un exemple, exécutez une recherche à l'aide de Éditer | Tout rechercher)
  • Surbrillance - enveloppe un objet afin qu'il soit surligné en jaune lorsqu’il est vidé.
  • HorizontalRun - vous permet de vider une série d'objets sur la même ligne

LINQPad fournit également la classe HyperLinq. Cela a deux objectifs: le premier est d'afficher des hyperliens ordinaires:

new Hyperlinq ("www.linqpad.net").Dump();
new Hyperlinq ("www.linqpad.net", "Web site").Dump();
new Hyperlinq ("mailto:user@domain.com", "Email").Dump();

Vous pouvez combiner cela avec Util.HorizontalRun :

Util.HorizontalRun (true,
  "Check out",
   new Hyperlinq ("http://stackoverflow.com", "this site"),
  "for answers to programming questions.").Dump();

Résultat:

Consultez ce site pour obtenir des réponses aux questions relatives à la programmation.

Le deuxième objectif de HyperLinq est de créer de manière dynamique des requêtes:

// Dynamically build simple expression:
new Hyperlinq (QueryLanguage.Expression, "123 * 234").Dump();

// Dynamically build query:
new Hyperlinq (QueryLanguage.Expression, @"from c in Customers
where c.Name.Length > 3
select c.Name", "Click to run!").Dump();

Vous pouvez également écrire vos propres méthodes d’extension dans LINQPad. Allez dans «Mes requêtes» et cliquez sur la requête intitulée «Mes extensions». Tous les types / méthodes définis ici sont accessibles à toutes les requêtes:

void Main()
{
  "hello".Pascal().Dump();  
}

public static class MyExtensions
{
  public static string Pascal (this string s)
  {
    return char.ToLower (s[0]) + s.Substring(1);
  }
}

En 4.46 (.02), de nouvelles classes et méthodes ont été introduites :

  • DumpContainer (class)
  • OnDemand (méthode d'extension)
  • Util.ProgressBar (classe)

De plus, la classe Hyperlinq prend désormais en charge un délégué Action qui sera appelé lorsque vous cliquerez sur le lien, ce qui vous permettra de réagir par code, et pas uniquement par des liens vers des pages Web externes.

DumpContainer est une classe qui ajoute un bloc dans la fenêtre de sortie et dont le contenu peut être remplacé.

REMARQUE! N'oubliez pas de .Dump() le DumpContainer lui-même à l'emplacement approprié.

Utiliser:

var dc = new DumpContainer();
dc.Content = "Test";
// further down in the code
dc.Content = "Another test";

OnDemand est une méthode d'extension qui ne sera pas sortir le contenu de son paramètre à la fenêtre de sortie, mais ajouter un lien cliquable, que lorsque vous cliquez dessus remplacera le lien avec le .Dump() ed contenu du paramètre. C'est idéal pour les structures de données parfois nécessaires qui sont coûteuses ou prennent beaucoup de place.

REMARQUE! N'oubliez pas de .Dump() les résultats de l'appel de OnDemand à l'endroit approprié.

Pour l'utiliser:

Customers.OnDemand("Customers").Dump(); // description is optional

Util.ProgressBar est une classe qui peut afficher une barre de progression graphique dans la fenêtre de sortie, qui peut être modifiée à mesure que le code évolue.

REMARQUE! N'oubliez pas de .Dump() l'objet Util.ProgressBar à l'emplacement approprié.

Pour l'utiliser:

var pb = new Util.ProgressBar("Analyzing data");
pb.Dump();
for (int index = 0; index <= 100; index++)
{
    pb.Percent = index;
    Thread.Sleep(100);
}

Réponse populaire

Le vidage est une méthode d'extension globale et SubmitChanges provient de l'objet DataContext qui est un objet System.Data.Linq.DataContext.

LP ajoute seulement Dump and Disassemble, à ma connaissance. Bien que je recommande fortement de l’ouvrir dans Reflector pour voir ce qui peut être utilisé. Une des choses les plus intéressantes est l’espace de noms LINQPad.Util qui contient quelques goodies utilisés par LINQPad en interne.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow