Frage

Ich verwende LINQPad, um LINQ-Abfragen in einer Anwendung zu erstellen, die ich gerade baue.

Das ist mir im Download aufgefallen LINQ in Aktion Proben, z.B.Beispiel 4.04, Intellisense zeigt eine Klasse „Bücher“, aber ich sehe keine Verweise oder "verwenden"-Anweisungen im LINQPad-Tool, hier ist das Beispiel:

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();

In „LinqBooks.Common, Business Objects, Book.linq" ist, wo die Klasse definiert zu sein scheint:

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;
  }
}

Aber wie funktioniert das, damit ich meine Klassen kopieren und mit LINQPad schnell LINQ-Anweisungen erstellen kann, die ich dann wieder in meine Anwendung kopieren kann?

War es hilfreich?

Lösung

Wenn Sie direkt im Code-Editor in LINQPad klicken und wählen Advanced Query Eigenschaften, gibt es zwei Dialoge:. Weitere Referenzen und weiteren Namespace Import

1) In Weitere Referenzen , wählen Sie Hinzufügen und klicken Sie auf Durchsuchen und navigieren Sie zu Ihrem benutzerdefinierten Assembly.

2) Dann in Zusätzliche Namespace Imports , geben Sie die Namespaces Sie von dieser Baugruppe importieren möchten.

Andere Tipps

LINQPad können Sie benutzerdefinierte Baugruppen durch die Advanced Query Properties Dialog verweisen, die durch Drücken von F4 geöffnet werden kann.

Eigentlich, wenn Sie an der Linq-Datei aussehen wie Book.linq mit Notizblock, sehen Sie die Datei eine Mischung aus XML ist und ein Ausschnitt von Codes am Ende:

<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=...";
....

Mit anderen Worten, können Sie mehr Detailinformationen aus Beispiel Linq Dateien finden, wie LINQPad erhält alle Informationen, ist ein dynamischer Montage und führt es intern Ergebnisse seiner UI zurück zu erhalten.

By the way, ich schrieb einen Blog gestern Abend über dieses Tool und mein Verständnis seiner Struktur: LINQPad ein .Net-Code Snippet IDE .

Edward, wir haben beim Erstellen der LINQ in Action-Beispiele eine Reihe von Strategien verwendet.In den Datenbankkapiteln haben wir uns oft nur auf die Fähigkeit von LINQPad verlassen, die Klassen basierend auf den Datenbanktabellen automatisch zu generieren.

In dem Fall, auf den Sie hier verweisen (4.04), haben wir den Verweis mit F4 zur vorkompilierten Klassenbibliothek hinzugefügt.Wir haben diese Strategie in Fällen verwendet, in denen LinqPad andere Klassen als die von Visual Studio generierten generierte und so dazu führte, dass sich der Kontext anders verhielt als erwartet, insbesondere im Hinblick auf die Änderungsverfolgung.

In anderen Fällen haben wir eine verschachtelte Klasse inline mit dem Rest des Beispiels hinzugefügt und die Option „Programm“ im Code-Editor verwendet.Siehe Beispiel 6.02.In diesem Fall betten wir die Books-Klasse tatsächlich in die generierte DataContext-Klasse ein, die LinqPad generiert.Wir haben diese Strategie auch verwendet, als wir unsere Spaltennamen mit einem Alias ​​versehen wollten, da die automatisch generierten Klassen, die LinqPad erstellt, es uns nicht einfach ermöglichen, diese Spalten innerhalb des Tools mit einem Alias ​​zu versehen.

In einigen Beispielen, insbesondere dort, wo wir benutzerdefinierte Erweiterungsmethoden demonstrieren, mussten wir einen weiteren Trick anwenden, indem wir das Ende der generierten Kontextklasse erzwingen (durch Hinzufügen einer offensichtlich nicht übereinstimmenden Endung } oder End Class) und dann eine neue Klasse starten, aber den Abschluss weglassen Endklammer/Endklasse.Sie können dies in Beispiel 2.16 in den heruntergeladenen Beispielen sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top