首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LINQPad如何引用其他类,例如LINQ中的Books in Action示例

LINQPad如何引用其他类,例如LINQ中的Books in Action示例
EN

Stack Overflow用户
提问于 2009-08-03 12:15:20
回答 3查看 32.7K关注 0票数 64

我正在使用LINQPad在我正在构建的应用程序中创建LINQ查询。

我注意到在下载的LINQ in Action示例中,例如示例4.04,intellisense显示了一个"Books“类,但我在LINQPad工具中没有看到任何引用或"using”语句,以下是示例:

代码语言:javascript
复制
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();

在"LinqBooks.Common,Business Objects,Book.linq“中,类似乎就是在这里定义的:

代码语言:javascript
复制
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;
  }
}

但是这是如何工作的,这样我就可以复制我的类,并使用LINQPad快速构建语句,然后我可以复制回我的应用程序中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-03 12:36:20

如果右键单击LINQPad中的代码编辑器并选择Advanced Query Properties,将出现两个对话框: Additional References和Additional Namespace Imports。

1)在Additional References中,选择Add,然后单击Browse并导航到自定义程序集。

2)然后,在Additional Namespace Imports中,键入要从该程序集导入的命名空间

票数 106
EN

Stack Overflow用户

发布于 2009-09-18 14:26:38

实际上,如果您查看带有记事本的Book.linq等linq文件,您将看到该文件是XML和末尾的一段代码的混合体:

代码语言:javascript
复制
<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=...";
....

换句话说,您可以从示例linq文件中找到有关LINQPad如何获取所有信息、构建动态程序集并在内部运行它以将结果返回到UI的更多详细信息。

顺便说一下,我昨晚写了一篇关于这个工具的博客,以及我对它的结构的理解:LINQPad a .Net Snippet Code IDE

票数 4
EN

Stack Overflow用户

发布于 2011-06-13 21:51:35

Edward,我们在构建LINQ in Action示例时使用了许多策略。在数据库章节中,我们经常仅仅依靠LINQPad基于数据库表自动生成类的能力。

在您在此处引用的情况(4.04)中,我们确实使用F4添加了对预编译类库的引用。在LinqPad生成的类与Visual Studio生成的类不同的情况下,我们使用了此策略,从而导致上下文的行为与您预期的不同,特别是在更改跟踪方面。

在其他情况下,我们添加了与示例的其余部分内联的嵌套类,并在代码编辑器中使用了"Program“选项。请参见示例6.02。在本例中,我们实际上是将Books类嵌入到LinqPad生成的DataContext类中。当我们想要给列名起别名时,我们也使用了这种策略,因为LinqPad创建的自动生成的类不容易让我们在工具中为这些列起别名。

在几个示例中,特别是在演示自定义扩展方法的情况下,我们必须做另一个技巧,强制生成的上下文类结束(添加一个明显不匹配的End }或end Class),然后启动一个新类,但省略它的结束end大括号/end类。您可以在下载的示例中的示例2.16中看到这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1222009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档