Pergunta

Eu estou usando LINQPad para criar consultas LINQ em um aplicativo que eu estou bulding.

Eu notei que na baixado LINQ em Ação amostras, por exemplo, exemplo 4.04, intellisense mostra uma classe "Livros", mas não vejo nenhum referências ou " usando " declarações na ferramenta LINQPad, aqui está o exemplo:

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

Em "LinqBooks.Common, Business Objects, Book.linq " é onde a classe parece estar definido:

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

Mas como é que este trabalho para que eu possa copiar em minhas aulas e uso LINQPad às declarações rapidamente construir LINQ que eu possa, em seguida, copiar de volta para a minha aplicação?

Foi útil?

Solução

Se você clique direito no editor de código em LINQPad e escolha Propriedades de consulta avançada, existem duas caixas de diálogo:. Referências adicionais e Namespace adicionais Importações

1) Em Referências adicionais , escolha Adicionar seguida, clique em Procure e navegue até o costume de montagem.

2) Em seguida, em adicionais Namespace Importações , digite o namespaces que pretende importar a partir desse conjunto.

Outras dicas

LINQPad permite montagens personalizadas de referência através do propriedades de consulta avançadas de diálogo que pode ser aberto pressionando F4 .

Na verdade, se você olhar para o arquivo linq como Book.linq com bloco de notas, você vai ver o arquivo é uma mistura de XML e um trecho de códigos no final:

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

Em outras palavras, você pode encontrar mais informações detalhadas a partir de arquivos de exemplo LINQ sobre como LINQPad recebe toda a informação para fora, constrói uma dinâmica montagem e executa-lo internamente para obter resultados de volta à sua UI.

A propósito, eu escrevi um blog na noite passada sobre essa ferramenta e minha compreensão da sua estrutura: LINQPad um .Net trechos código IDE .

Edward, usamos uma série de estratégias na construção do LINQ em amostras de ação. Nos capítulos de banco de dados, que muitas vezes apenas se baseou na capacidade da LINQPad para gerar automaticamente as classes com base nas tabelas de banco de dados.

No caso você faz referência aqui (4,04) fizemos adicionar a referência para a biblioteca de classes pré-compilados usando F4. Usamos essa estratégia nos casos em que LinqPad gerado classes diferentes daqueles gerados pelo Visual Studio e, assim, causaram o contexto para se comportar de forma diferente do que seria de esperar, particularmente em relação ao controle de alterações.

Em outros casos, nós adicionamos uma linha classe aninhada com o resto da amostra e usou a opção "Programa" no editor de código. Veja o exemplo 6.02. Neste caso, estamos realmente encaixar a classe dentro de livros da classe DataContext gerado que LinqPad gera. Nós também usou essa estratégia quando queríamos apelido nossos nomes das colunas porque as classes geradas automaticamente que LinqPad cria não facilmente deixar-nos apelido essas colunas dentro da ferramenta.

Em amostras casal, especialmente quando estamos demonstrando métodos de extensão personalizada, nós tivemos que fazer outro truque de forçar a classe de contexto gerado ao fim (adicionando um final aparentemente inigualável} ou End Class) e, em seguida, iniciar uma nova classe, mas omiti-lo do final de fechamento de classe cinta / fim. Você pode ver isso no exemplo 2.16 nas amostras baixados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top