我正在使用LINQPad在我正在构建的应用程序中创建LINQ查询。
我注意到在下载的LINQ in Action示例中,例如示例4.04,intellisense显示了一个"Books“类,但我在LINQPad工具中没有看到任何引用或"using”语句,以下是示例:
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“中,类似乎就是在这里定义的:
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快速构建语句,然后我可以复制回我的应用程序中?
发布于 2009-08-03 12:36:20
如果右键单击LINQPad中的代码编辑器并选择Advanced Query Properties,将出现两个对话框: Additional References和Additional Namespace Imports。
1)在Additional References中,选择Add,然后单击Browse并导航到自定义程序集。
2)然后,在Additional Namespace Imports中,键入要从该程序集导入的命名空间。
发布于 2009-09-18 14:26:38
实际上,如果您查看带有记事本的Book.linq等linq文件,您将看到该文件是XML和末尾的一段代码的混合体:
<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>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。
发布于 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中看到这一点。
https://stackoverflow.com/questions/1222009
复制相似问题