64 votes

Comment LINQPad référence-t-il les autres classes, p.ex. Livres dans les exemples LINQ in Action

Je suis en utilisant LINQPad pour créer des requêtes LINQ dans une application que je suis bâtiment.

J'ai remarqué que dans le téléchargé LINQ in Action des échantillons, par exemple exemple 4.04, intellisense affiche une catégorie "Livres", mais je ne vois pas de références ou de "l'aide" des déclarations dans le LINQPad outil, voici un exemple:

List<Book> books = new List<Book>() {
  new Book { Title="LINQ in Action" },
  new Book { Title="LINQ for Fun" },
  new Book { Title="Extreme LINQ" } };

var titles =
  books
    .Where(book => book.Title.Contains("Action"))
    .Select(book => book.Title);

titles.Dump();

Dans "LinqBooks.Commune, Business Objects, Livre.linq" est où la classe semble être définis:

public class Book
{
  public IEnumerable<Author> Authors {get; set;}
  public String Isbn {get; set;}
  public String Notes {get; set;}
  public Int32 PageCount {get; set;}
  public Decimal Price {get; set;}
  public DateTime PublicationDate {get; set;}
  public Publisher Publisher {get; set;}
  public IEnumerable<Review> Reviews {get; set;}
  public Subject Subject {get; set;}
  public String Summary {get; set;}
  public String Title {get; set;}
  public String Test {get; set;}

  public override String ToString()
  {
    return Title;
  }
}

Mais comment cela fonctionne, afin que je puisse les copier dans mes classes et l'utilisation LINQPad de construire rapidement des LINQ déclarations que je peux ensuite copier dans mon application?

105voto

Winston Smith Points 12029

Si vous cliquez avec le bouton droit de la souris dans l'éditeur de code dans LINQPad et choisissez Propriétés de la requête avancées, deux boîtes de dialogue s'affichent: Références supplémentaires et Importations d'espaces de noms supplémentaires.

1) Dans Références supplémentaires , choisissez Ajouter puis cliquez sur Parcourir et naviguez jusqu'à votre assemblage personnalisé.

2) Ensuite, dans Importations d'espaces de noms supplémentaires , tapez les espaces de noms que vous souhaitez importer à partir de cet assemblage.

10voto

Andrew Hare Points 159332

LINQPad vous permet de référencer des assemblys personnalisés via la boîte de dialogue Propriétés de la requête avancées, qui peut être ouverte en appuyant sur F4 .

4voto

David.Chu.ca Points 7621

En fait, si vous regardez le linq fichier comme un Livre.linq avec le bloc-notes, vous verrez le fichier est un mélange de XML et un extrait de codes à la fin:

<Query Kind="Statements"> <!-- kind: Program, ... --->
  <Connection>...</Connection> <!-- Optional, if you have connection to db -->
  <Reference>[path]\[library]</Reference> <!-- references to your customized libraries -->
  <Reference>RuntimeDirectory&gt;System.Data.dll</Reference> <!-- example to System.Data.dll -->
  <Namespace>System.Data</Namespace> <!-- here are nodes for namespaces... -->
  <Namespace>MyLibrary.Common</Namespace>
</Query>

var conn = "Data Source=...";
....

En d'autres termes, vous pouvez trouver plus d'informations détaillées à partir de l'exemple de linq fichiers sur la façon LINQPad reçoit toutes les informations, crée une dynamique de l'assemblage et l'exécute en interne pour récupérer les résultats de son INTERFACE utilisateur.

En passant, j'ai écrit un blog la nuit dernière à propos de cet outil et de ma compréhension de sa structure: LINQPad un .Net Extrait de Code IDE.

2voto

Jim Wooley Points 6323

Edward, nous avons utilisé un certain nombre de stratégies lors de la construction de l'LINQ in Action des échantillons. Dans la base de données des chapitres, nous avons souvent simplement compté sur LINQPad la capacité de générer automatiquement les classes basées sur les tables de base de données.

Dans le cas où vous faites référence ici (4.04), nous avons ajouté la référence à la pré-compilation de la bibliothèque de la classe à l'aide de F4. Nous avons utilisé cette stratégie dans le cas où LinqPad classes générées différents de ceux générés par Visual Studio et ainsi causé le contexte de se comporter différemment que vous pouvez vous attendre, en particulier en ce qui concerne le suivi des modifications.

Dans d'autres cas, nous avons ajouté une classe imbriquée en ligne avec le reste de l'échantillon et a utilisé le "Programme" option dans l'éditeur de code. Voir l'exemple 6.02. Dans ce cas, nous sommes en train d'enfoncer les Livres de classe à l'intérieur de la classe DataContext que LinqPad génère. Nous avons également utilisé cette stratégie quand nous avons voulu faire un alias de notre colonne des noms, parce que l'auto-générés classes qui LinqPad crée n'est pas facilement nous laisser alias de ces colonnes à l'intérieur de l'outil.

Dans quelques échantillons, en particulier là où nous sommes la démonstration personnalisée des méthodes d'extension, nous avons dû faire un autre truc de forcer l'généré le contexte de la classe à la fin (de l'ajout d'un aparently inégalée fin } ou à la Fin de la Classe) et puis le démarrage d'une nouvelle classe, mais en omettant de la clôture de l'accolade de fin/fin de la classe. Vous pouvez le voir dans l'exemple 2.16 dans le téléchargement des échantillons.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X