• Cast的妙用之泛用LINQ 语句

什么是泛用LINQ 语句

泛用LINQ语句的网页设计概念很简单,在一些情况下,我们会有需求使用同一段程式码来对不同资料表做询,这在ADO.NET中很容易达到,见下例:


以下为引用的内容:
static void PrintCustomerID(SqlDataReader reader)
{
Console.WriteLine(reader.GetString(reader.GetOrdinal("CustomerID")));
}


此函式接受一个Reader物件,然后顷印CustomerID栏位值,这不受限于SqlDataReader所选取的Schema或是资料表,只要Schema中有CustomerID栏位即可。

不过,这样的手法在LINQ这种Typed-Query(具型别查询语句)模式下,并没有很直觉的写法,因为你不能写下下面的句子。

以下为引用的内容:
static void Test2(int index)
{
var query;
DataClasses1DataContext context = new DataClasses1DataContext();
context.Log = Console.Out; //for log only,you can remove it.
if (index == 1)
; query = context.Customers;
else
; query = context.Orders;

var result = from s1 in query where s1.CustomerID.Contains("V")
;;; select s1;
foreach (var item in result)
{
; Console.WriteLine(item.CustomerID);
}
}


编译器会抱怨,var的变数必须在宣告时指定。那要如何在LINQ To SQL或是LINQ To Entites达到同样的效果呢?这有几个方法可以做到。

1、使用ExecuteQuery,并使用另一个Typed物件来接收回传集。

2、使用实体类别(Entity Class)继承。

3、使用Cast与partial class。

1与2对熟悉LINQ To SQL的读者应该不难,所以我就不再赘述了,第三个手法是较少见的,我们可以运用partial class机制,让Entity Classes实作特定介面,然后以Cast函式来达到目的。

以下为引用的内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Data.SqlClient;

namespace ConsoleApplication39
{
class Program
{
; static void Main(string[] args)
; {
; Test(1);
; Console.WriteLine("------");
; Test(0);
; Console.ReadLine();
; }

; static void Test(int index)
; {
; IQueryable query = null;
; DataClasses1DataContext context = new DataClasses1DataContext();
; context.Log = Console.Out; //for log only,you can remove it.
; if(index == 1)
;; query = context.Customers.Cast();
; else
;; query = context.Orders.Cast();

; var result = from s1 in query where s1.CustomerID.Contains("V") select s1;
; foreach (var item in result)
; {
;; Console.WriteLine(item.CustomerID);
; }
; }
}

public interface IGenericBaseClass
{
; string CustomerID { get; set; }
}

partial class Customers : IGenericBaseClass
{
}

partial class Orders : IGenericBaseClass
{
}
}


仔细揣摩上面的代码,我相信你会找到一个不一样的LINQ应用手法。

我们是专业的广州网站设计网站建设公司,在各行业网站建设网站制作网页设计网站开发应用上有着成熟、丰富的项目经验,网站建设咨询电话:020-38847510 ,欢迎来访或来电垂询,我们随时乐意为您服务!
上一篇详细介绍php5编程中的异常处理技巧  下一篇PHP5+UTF8多文件上传
【 字体: 收藏】  打印关闭】标签:网站制作 LINQ 语句 海柳网络公司
【作者:佚名】【来源:网络转载】 录入:【广州网站设计】 编辑:广州网站建设公司
  • 相关链接