ALinq Dynamic 使用指南 慨述(上)

2021-09-08 10:14:33 字數 4238 閱讀 3288

1.程式集與命名空間的引用

使用 alinq dynamic,你需要引用alinq.dynamic.dll(alinq使用者)或者system.data.linq.dynamic.dll (linq to sql使用者),在使用時,還需要引入alinq.dynamic命名空間。當然,使用前你還需要完成建模的工作,本文假設你已經會了,否則請參考linq to sql或alinq教程。

示例一下面的示例,由於使用到dynamic關鍵字,必須執行在.net framework4或以上。

using

system;

using

alinq.dynamic;

using

northwinddemo;

namespace "

, e.firstname, e.lastname);}}

}}

示例二下面的示例可以執行在

.net framework 3.5

(為了便於閱讀以及節省編幅,僅給出關鍵部份**)。

var db = new

northwinddatacontext();

var q = db.createquery("

select e.firstname, e.lastname from employees as e");

foreach (var e in

q) console.writeline("

", e["

firstname

"], e["

lastname

"]);

語句一

select p from product as p

語句二

select p from product as p

2.命名空間區分大小寫

對於命名空間,是區分大小寫的,例如下面的兩條esql語句是不等價的。

語句一

using northwinddemo 

select p from product as p

語句二

using northwinddemo

select p from product as p

這是因為命名空間是區分大小區的,northwinddemo 和 northwinddemo是不等價的。

1.using關鍵字

通過使用 using 關鍵字,可以引入命名空間,避免使用全域性標識。例如:

var esql = @"

using northwinddemo;

select e.firstname, e.lastname

from employee as e";

var q1 = db.createquery(esql);

其等效於:

var esql = @"

select e.firstname, e.lastname

from northwinddemo.employee as e";

var q1 = db.createquery(esql);

2.預設引用的命名空間

在使用 createquery 方法進行查詢的時候,alinq dynamic 會自動引入 datacontext 所在的命名空間。例如:

var db = new

northwinddemo.northwinddatacontext();

var esql = "

select e.firstname, e.lastname from employee as e

";

由於 datacontext ,即 db 變數,對應的實體類命名空間為 northwinddemo, esql 語句會自動引入 nothwinddemo 命名空間,即等效於下面的語句:

var db = new

northwinddemo.northwinddatacontext();

var esql = @"

using northwinddemo;

select e.firstname, e.lastname from employee as e

";

1.簡單識別符號

識別符號由字母,數字,和下劃線組成,並且第乙個字元必須是字母(a-z或a-z)。

2.帶引號的識別符號

帶引號的識別符號是括在方括號()中的任意字串行。使用帶引號的識別符號可以指定含有在識別符號中無效的字元的識別符號。方括號中的所有字元都是識別符號的一部分,包括所有空格。

但是,帶引號的識別符號,第乙個字元不能是數字,並且不能包含以下字元:

換行符回車符

製表符backspace

額外的方括號(即括起識別符號的方括號中的方括號)。

單引號(即:')

雙引號(即:")

使用帶引號的識別符號可以建立在識別符號中無效的屬性名稱字元,如下面的示例所示:

var esql = "

select c.contactname as [contact name] from customers as c";

var q = db.createquery(esql).execute();

使用帶引號的識別符號,還可以指定關鍵字作為識別符號。例如,如果型別 email 具有名為「from」的屬性,則可以使用方括號來消除與保留關鍵字「from」的歧義,如下所示:

var esql = "

select e.[from] from emails as e

";

但是下面的例子是非法的

識別符號中帶引號

var esql = "

select c.contactname as ['contact name'] from customers as c

";

識別符號以數字開始

var esql = "

select c.contactname as [0contactname] from customers as c

";

3.別名規則

如果需要,建議在查詢中指定別名,別名可以應用於:

行建構函式

查詢語句的 from 子句

查詢語句的 select 子句

查詢語句的 group by 子句

有效的別名

有效的別外包括簡單識別符號或者帶引號的識別符號

引數是查詢語句之外定義的變數,引數名在查詢語句中定義,並以(@)符號作為字首。這可以將它們與屬性名或查詢中定義的其它名稱區分開來。引數為兩類,命名引數和順序引數,對於命名引數,必須指名稱,引數的傳遞不要按照順序。順序引數不需要指定名稱,在查詢語句中使用序號(序號從0開始)作為引數名,引數必須按順序傳遞。

命名引數

var esql = @"

select e from employees as e

where e.firstname = @f and e.lastname = @l";

var q = db.createquery(esql, new objectparameter("

l", "

mak"), new objectparameter("

f", "

mike

"));

順序引數

var esql = @"

select e from employees as e

where e.firstname = @0 and e.lastname = @1";

var q = db.createquery(esql, "

mike

", "

mak");

變數表示式是對當前作用域中定義的命名表示式的引用。變數引用必須是有效的識別符號。

以下示例演示如何在查詢語句中使用變數。from 子句中的 c 是變數定義。在 select 子句中使用的 c 表示變數引用。

var esql = "

select c.contactname from customers as c

";

React Native Cookie使用指南

web開發中,cookie是乙個常用工具。通常會將使用者與伺服器會話的sessionid儲存在cookie中,用以在請求中標示會話 或者將登入態token值儲存在cookie中,請求中通過cookie值校驗登入態。當我們使用react native開發應用時,是否還能像在web開發中那樣使用cook...

Windows Live Writer 使用指南

一 簡介 二 安裝配置 指定安裝目錄進行安裝,方法如下 mklink d c program files x86 windows live e microsoft windows live mklink d f 我的文件 my weblog posts f 我的博文 三 新增賬戶 1 賬戶 2 cs...

Windows Live Writer 使用指南

一 簡介 二 安裝配置 指定安裝目錄進行安裝,方法如下 mklink d c program files x86 windows live e microsoft windows live mklink d f 我的文件 my weblog posts f 我的博文 三 新增賬戶 1 賬戶 2 cs...