RSS 2.0 Feed
LINQ Cookbook

大多数XSLT程序员对于下面这段复制一个XML文件的XSLT转换都非常熟悉。 这种XSLT身份转换的应用十分普遍,因为它可以让你复制整个XML文档,并且会“访问”到每一个XML节点和属性。如果你添加一个模板,那么它就会对那些存在匹配的节点或属性进行转换,而那些不存在匹配的节点和属性只会被简单的拷贝。

posted @ | Feedback (0) | Filed Under [ VB Team Blog LINQ Cookbook Did you know? Visual Basic ]

在前两次的手册中,我们讲了关于用ReplaceWith这个方法来进行身份转换.如果这个方法满足了你的需要,它会在你的代码中引发另外一个问题--"Halloween".让我们看看这个问题到底是怎样的,怎么样去解决.(详细的"Halloween"问题和解决方案可以参考这个文档). "Halloween"描述的场景是,你有一个以某种方式更新的数据集同时这个数据集又在被遍历的话,你会得到一个空引用的异常,更坏的是,你的代码可能会因为修改错误的数据而崩溃.例如前面两个手册用到的代码段:

posted @ | Feedback (1) | Filed Under [ VB Team Blog LINQ Cookbook Did you know? ]

配料: · Visual Studio 2008 (Beta2或更高版本) 类别:LINQ-ToXML 步骤: · 使用VB 创建一个新的Console Application。 · 创建RSS文档。添加以下代码到Sub Main中。

posted @ | Feedback (2) | Filed Under [ VB Team Blog LINQ Cookbook Did you know? ]

这个手册主要是讲,在XML文件中怎样使用Visual Basic,XML轴属性和LINQ toXML对象访问子和父元素。 子代 Visual Basic提供XML轴属性,可以很容易的引用子节点和标记。这是使用XML经常会遇到的情况。你可能会需要引用下一级元素在XML的数据层次上的不同层级上出现。那样的话,你可以使用XML 子代轴属性。 XML子代轴属性是用三个跟随着你想引用的XML元素的周期来定义的。例如,在手册1中用到的AdventureWorks contacts source文件中(你可以从手册1下载这个XML文件和相关的模式)。里面有个元素,包括了关于联系方式例如电话号码,发货和帐单地址等等的信息。在元素里面的电话号码可以出现在这个元素值里面的任何位置。最终,你就可以用XML子代轴属性来引用电话号码这个元素。例如:

posted @ | Feedback (3) | Filed Under [ VB Team Blog LINQ Cookbook ]

XSLT中的身份转换顾名思义:就是将一种元素或属性的格式替换为另一种新的格式。尤其当处理一些结构中比较灵活的XML标识时,格式转换就显得特别关键。就像新闻的文章结构,不管标题在文章的什么地方被提及,都会被突显为斜体。但是,在XML样式中并不用为文章指定斜体格式,而是指定表明标题类型的词语,这样不同的转换就可以用自己的方式来处理词语。当你想要将这样的XML文档转换成易读的格式(如HTML),你除了要完整地保留原文内容,还需要保持突显的词语周围的文本结构。就比如说: This week a remastered version of the movie Raider’s of the Lost Ark was released. 转换为:

posted @ | Feedback (5) | Filed Under [ VB Team Blog LINQ Cookbook ]

LINQ的核心要求任何数据源能够被查询,这基本上意味着它必须实现IEnumerable接口(实际情况要更复杂一点,详细的说明请参见Visual Basic 9.0语言规范之11.21.2一节,)。现在,当使用LINQ对Dataset进行工作时我们就有了一个问题:DataTable没有实现IEnumerable,那么我们该如何来对它进行查询?

posted @ | Feedback (5) | Filed Under [ VB Team Blog LINQ Cookbook Converting SQL to LINQ ]

摘要:[原文作者]:Jonathan Aneja [原文链接]:LINQ Cookbook, Recipe 3: Find all the prime numbers in a given range (Jonathan Aneja)   准备材料: -         Visual Studio 2008 (Beta2 或更高版本)    类别: LINQ-To-Objects    制作方法: -         打开 Visual Studio 2008,  点击菜单 ”文件/新建项目”.  找到并双击 ”控制台应用程序”  图标. -         添加以下代码:        Module Module1       Sub Main()         Dim primes = GetPrimesInRange(30, 50)           For Each n In primes             Console.WriteLine(n)         Next         Console.ReadLine()     End Sub       Function GetPrimesInRange(ByVal low, ByVal high) As IEnumerable(Of Integer)         Dim range = Enumerable.Range(1, high)         Return From num In range _                From num2 In range _                Where num Mod num2 = 0 _                Group By num Into Count() _                Where Count = 2 And num >......[阅读全文]

posted @ | Feedback (1) | Filed Under [ VB Team Blog LINQ Cookbook ]

摘要:[原文作者]:Kit George [原文链接]:LINQ Cookbook, Recipe 4: Find all complex types in a given assembly (Kit George)   准备材料: -        Visual Studio 2008 (Beta2 或更高版本) -         一个需要分析的程序集 (在这个例子中, 我们使用了用来存储字符串的mscorlib.dll 程序集) -         一个 “复杂类型”的字义.  在这个例子中, 复杂类型包含10个以上public方法,而且至少有一个方法具有3个以上的参数.   类别: LINQ-To-Objects, LINQ and types, LINQ and WinForms   制作方法: -         打开 Visual Studio 2008,  点击菜单 “文件/新建项目”. 找到并双击 ”Windows 窗体应用程序”  图标. -        拖放一个 Listbox 到窗体上,调整Listbox的高度. 再拖放一个按钮到窗体上 -        双击这个按钮, 并将以下代码添加到按钮的事件处理函数中:   Dim q = From type In System.Reflection.Assembly.GetAssembly( _                   GetType(String)).GetTypes(), _                   m In type.GetMethods() _         Where type.IsPublic _                   AndAlso type.GetMethods.Length > 10 _                   AndAlso m.GetParameters.Length > 3 _         Select type Distinct   ListBox1.Items.AddRange(q.ToArray)...[阅读全文]

posted @ | Feedback (3) | Filed Under [ VB Team Blog LINQ Cookbook ]

摘要:[原文作者]: Kit George [原文链接]: LINQ Cookbook, Recipe 1: Change the font for all labels on a windows form   我们打算启动一个LINQ“菜谱”项目,并逐步将它完成。这个项目的目的是为你在编程和用查询时遇到的一些特殊情况提供解决的方案。我再也想不出一个更好的方式,来关联你能利用LINQ所做的每件事情了。   这个系列项目主要是为您展示LINQ可以做到的各式各样的事情。像任何一本好菜谱一样,我们将为这本菜谱做分类,那样你之后就可以很容易地查询。但是不要希望一个特定的“菜谱”会有大量的描述,尽管它会包含重现步骤。请尽管向我们要求任何你想要看到的菜谱,而我们将尽可能多地创造新的。   材料: -      Visual Studio 2008 (Beta2 或更高版本)   类别: -      LINQ-To-Objects,LINQ with Windows Forms,LINQ with controls,Label   制作方法: -      打开 Visual Studio 2008,点击“文件/新建项目”,找到并双击“Windows窗体应用程序”图标。 -      增加窗体的大小,使其足够容纳一定数量的控件。 -      从工具箱中拖放几个控件到窗体上,确保至少添加3-4个标签控件。       o  我个人比较喜欢的是两个分组控件(GroupBox),在文本框(TextBox)前放两个标签(Label)(标签在分组控件之上),并在每个分组控件中放一对单选框(RadioButton)控件。这样可以确保测试递归代码。 -      添加一个按钮到窗体上并把它的Text属性改为“Go”。双击这个按钮,然后修改事件处理代码并添加下面的方法:       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click         For Each label In GetLabels(Me)             label.Font = New Font("Comic Sans MS", 12, _                                   FontStyle.Bold Or FontStyle.Underline)         Next     End Sub       Private Function GetLabels(ByVal sourceControl As Control) _                                As IEnumerable(Of Control)         If sourceControl.Controls.Count > 0 Then             Dim labels = From cont As Control In sourceControl.Controls _                          Where TypeOf......[阅读全文]

posted @ | Feedback (11) | Filed Under [ VB Team Blog LINQ Cookbook ]

Full LINQ Cookbook Archive