Comment LINQPad référence-t-il d'autres classes, par exemple Livres dans les exemples LINQ in Action

StackOverflow https://stackoverflow.com/questions/1222009

Question

J'utilise LINQPad pour créer des requêtes LINQ dans une application en cours de construction.

J'ai remarqué que, dans les exemples LINQ en action téléchargés, par exemple. Exemple 4.04, IntelliSense montre une classe "Livres". mais je ne vois aucune référence ou " utiliser ". instructions dans l'outil LINQPad, voici l'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.Common, Business Objects, Book.linq ". est où la classe semble être définie:

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-t-il pour que je puisse copier dans mes classes et utiliser LINQPad pour créer rapidement des instructions LINQ que je peux ensuite copier dans mon application?

Était-ce utile?

La solution

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 pour rechercher votre assemblage personnalisé.

2) Ensuite, dans Importations d'espaces de noms supplémentaires , saisissez les espaces de noms à importer à partir de cet assembly.

Autres conseils

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

En fait, si vous regardez le fichier linq tel que Book.linq avec le bloc-notes, vous verrez qu'il est un mélange de XML et d'un extrait de code à 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=...";
....

Dans les mots de commande, vous trouverez peut-être des informations plus détaillées dans les exemples de fichiers linq sur la façon dont LINQPad extrait toutes les informations, crée un assemblage dynamique et l'exécute en interne pour obtenir les résultats dans son interface utilisateur.

À propos, j’ai écrit un blog hier soir sur cet outil et ma compréhension de sa structure: LINQPad un IDE de code d'extrait de code .Net .

Edward, nous avons utilisé un certain nombre de stratégies lors de la création des exemples LINQ in Action. Dans les chapitres de la base de données, nous nous sommes souvent contentés de la capacité de LINQPad de générer automatiquement les classes en fonction des tables de la base de données.

Dans le cas où vous faites référence ici (4.04), nous avons ajouté la référence à la bibliothèque de classes précompilée en utilisant F4. Nous avons utilisé cette stratégie dans les cas où LinqPad avait généré des classes différentes de celles générées par Visual Studio, entraînant ainsi un comportement du contexte différent de celui attendu, notamment en ce qui concerne le suivi des modifications.

Dans d'autres cas, nous avons ajouté une classe imbriquée au reste de l'échantillon et avons utilisé l'option "Programme". option dans l'éditeur de code. Voir exemple 6.02. Dans ce cas, nous intégrons effectivement la classe Books à l'intérieur de la classe DataContext générée générée par LinqPad. Nous avons également utilisé cette stratégie pour aliaser les noms de nos colonnes, car les classes générées automatiquement par LinqPad ne nous laissent pas facilement aliaser ces colonnes dans l'outil.

Dans quelques exemples, en particulier lorsque nous démontrons des méthodes d’extension personnalisées, nous avons dû faire une autre astuce en forçant la classe de contexte générée à se terminer (en ajoutant une fin apparemment incomparable} ou End Class), puis en démarrant une nouvelle classe. en omettant sa clôture finale / classe finale. Vous pouvez voir cela dans l'exemple 2.16 dans les exemples téléchargés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top