程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 3.0入門系列(十一)-之In, Like操作(1)

C# 3.0入門系列(十一)-之In, Like操作(1)

編輯:關於C語言

有這麼一個例子,尋找一個表中的某個字段介於某個給定的集合該怎麼辦?Sql寫起來很簡單,比如:Select * from table where id in (2,3, 4, 5)。 就是尋找id字段為這個給定的集合(2,3, 4, 5)內的值。那Linq to Sql該怎麼做呢?一個字,簡單。

In Operator

比如,我們想要查找,"AROUT", "BOLID" 和 "FISSA" 這三個客戶的訂單。該如何做呢?Linq to Sql是這麼做的。

string[] customerID_Set = new string[] { "AROUT", "BOLID", "FISSA" };

var q = (from o in db.Orders
where customerID_Set.Contains(o.CustomerID)
select o).ToList();

其生成的sql語句為

SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [
t0].[RequiredDate], [t0].[ShippedDate], [t0].[ShipVia], [t0].[Freight], [t0].[Sh
ipName], [t0].[ShipAddress], [t0].[ShipCity], [t0].[ShipRegion], [t0].[ShipPosta
lCode], [t0].[ShipCountry]
FROM [dbo].[Orders] AS [t0]
WHERE [t0].[CustomerID] IN (@p0, @p1, @p2)
-- @p0: Input String (Size = 5; Prec = 0; Scale = 0) [AROUT]
-- @p1: Input String (Size = 5; Prec = 0; Scale = 0) [BOLID]
-- @p2: Input String (Size = 5; Prec = 0; Scale = 0) [FISSA]

先定義了一個數組,在linq query中,使用Contains,也很好理解,就是這個數組,包含了所有的CustomerID, 即返回結果中,所有的CustomerID都在這個集合內。也就是in。 你也可以把數組的定義放在linq語句裡。比如:

var q = (from o in db.Orders
where (new string[] { "AROUT", "BOLID", "FISSA" }).Contains(o.CustomerID)
select o).ToList();

Not in 呢?加個取反就是

var q2 = (from o in db.Orders
where !(new string[] { "AROUT", "BOLID", "FISSA" }).Contains(o.CustomerID)
select o).ToList();

就這麼簡單。

Like Operator

Like的操作,有點像in,但是,方向變了。什麼意思呢。就是你給定一個字符串,去尋找數據中某個字段包含這個字符串。就是給定的字符串是某字段的子集。Sql Script是這麼寫的。

Selec * from table where id like '%AD%'
Selec * from table where id like '%AD'
Selec * from table where id like 'AD%'

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved