當前位置:首頁 » 編程語言 » linqsql函數

linqsql函數

發布時間: 2022-07-28 04:34:52

① linq有沒有類似sql的ascii函數嗎

SQL的ASCII函數,就是把第一個字元轉換為ascii碼,
C#中直接用(int)'a' 就可以了,不需要linq

② sql 中的charindex函數 用linq to sql 怎麼實現

var query=from x in dt.AsEnumerable()
where x.Field<string>("fieldname").IndexOf("char")>0

③ sql 函數 exec在c#linq怎麼寫

linq2sql?
你在linq2sql的操作界面把函數或者過程拖到裡面就可以了。
使用的話,你實例linq2sql,直接點出來用就行。跟平時調用函數一樣。

④ LINQ TO SQL 有什麼優缺點啊

首先,在了解 LINQ To SQL 有什麼優點之前,我們有必要首先了解下,微軟為什麼弄了這么個東西。 搞出這個東西來有什麼目的:——當然是為了 滿足不知道怎麼操作數據的程序員開發設計的,並不是每個程序員 都會直接操作資料庫,LinQ 可以讓他們以一種面向數據對象的方式來思考,及持久化他們的數據!

好處: 容易學習,書寫簡單。 在開發 中小型 項目 的時候推薦使用!因為可以節省時間!
它可以很方便的調用 存儲過程、SQL函數

缺點:由於直接封裝了所有的數據持久操作。導致批量持久數據會產生效率問題
尤其體現在批量跟新數據,它會在內存中保持大量的數據模型。

總結:中小型 項目 就放心用吧! 不過從技術 儲備的角度來說,建議 看看entity framework

⑤ 如何在LINQ TO SQL中一次使用多個聚合函數

1)COUNT
語法:COUNT(e1)
參數:e1為一個表達式,可以是任意的數據類型
返回:返回數值型數據
作用:返回e1指定列不為空的記錄總數

2)SUM,
語法:SUM(e1)
參數:e1為類型為數值型的表達式
返回:返回數值型數據
作用:對e1指定的列進行求和計算

3)MIN, MAX
語法:MIN(e1)、MAX(e1)
參數:e1為一個字元型、日期型或數值類型的表達式。
若e1為字元型,則根據ASCII碼來判斷最大值與最小值。
返回:根據e1參數的類型,返回對應類型的數據。
作用:MIN(e1)返回e1表達式指定的列中最小值;
MAX(e1)返回e1表達式指定的列中最大值;

4)AVG
語法:AVG(e1)
參數:e1為一個數值類型的表達式
返回:返回一個數值類型數據
作用:對e1表達式指定的列,求平均值。

5)MEDIAN
語法:MEDIAN(e1)
參數:e1為一個數值或日期類型的表達式
返回:返回一個數值或日期類型的數據
作用:首先,根據e1表達式指定的列,對值進行排序;
若排序後,總記錄為奇數,則返回排序隊列中,位於中間的值;
若排序後,總記錄為偶數,則對位於排序隊列中,中間兩個值進行求平均,返回這個平均值;
6)RANK
1)用法1:RANK OVER
語法: RANK( ) OVER ([ PARTITION BY column1 ] ORDER BY column2 [ASC|DESC])
為分析函數,為每條記錄產生一個序列號,並返回。
參數: column1為列名,指定按照哪一列進行分類(分組)
column2為列名,指定根據哪列排序,默認為升序;
若指定了分類子句(PARTITION BY),則對每類進行排序(每個分類單獨排序)
返回:返回一個數值類型數據,作為該記錄的序號!
作用:為分析函數,對記錄先按column1分類,再對每個分類進行排序,並為每條記錄分配一個序號(每個分類單獨排序)
注意:排序欄位值相同的記錄,分配相同的序號。存在序號不連續的情況
實例:student表記錄了學生每科的成績,要求按學科排序,並獲取每科分數前兩名的記錄
student表如下:
SQL> select * from student order by kemu;
NAME ID KEMU FENSHU
---------- -------------- -------------- ----------------
Li 0113101 物理 80
Luo 0113011 物理 80
Wang 0113077 物理 70
Zhang 0113098 物理 90
Luo 0113011 高數 80
Wang 0113077 高數 70
Zhang 0113098 高數 80
Li 0113101 高數 90
8 rows selected
按學科分類,按成績排序(降序)
SQL> select rank() over(partition by KEMU order by FENSHU desc) as sort,student.* from student;
SORT NAME ID KEMU FENSHU
---------- ---------- ---------------- ------------ ----------
1 Zhang 0113098 物理 90
2 Li 0113101 物理 80
2 Luo 0113011 物理 80
4 Wang 0113077 物理 70
1 Li 0113101 高數 90
2 Luo 0113011 高數 80
2 Zhang 0113098 高數 80
4 Wang 0113077 高數 70
由返回記錄可了解,對排序列的值相同的記錄,rank為其分配了相同的序號(SORT NAME列)。
並且之後的記錄的序號是不連續的。
若獲取每科前兩名,只需對排序後的結果增加二次查詢即可
select * from
(select rank() over(partition by KEMU order by FENSHU desc) as sort_id,student.* from student) st
where st.sort_id<=2;

2)用法2:RANK WITHIN GROUP
語法: RANK( expr1 ) WITHIN GROUP ( ORDER BY expr2 )
為聚合函數,返回一個值。
參數:expr1為1個或多個常量表達式;
expr2為如下格式的表達式:
expr2的格式為'expr3 [ DESC | ASC ] [ NULLS { FIRST | LAST } ]'
其中,expr1需要與expr2相匹配,
即:expr1的常量表達式的類型、數量必須與ORDER BY子句後的expr2表達式的類型、數量相同
實際是expr1需要與expr3相匹配
如:RANK(a) WITHIN GROUP (ORDER BY b ASC NULLS FIRST);
其中,a為常量,b需要是與相同類型的表達式
RANK(a,b) WITHIN GROUP (ORDER BY c DESC NULLS LAST, d DESC NULLS LAST);
其中,a與b都為常量;c是與a類型相同的表達式、d是與b類型相同的表達式;

返回:返回數值型數據,該值為假定記錄在表中的序號。
作用:確定一條假定的記錄,在表中排序後的序號。
如:假定一條記錄(假設為r1)的expr2指定欄位值為常量expr1,則將r1插入表中後,
與原表中的記錄,按照ORDER BY expr2排序後,該記錄r1在表中的序號為多少,返回該序號。
注釋: NULLS FIRST指定,將ORDER BY指定的排序欄位為空值的記錄放在前邊;
NULLS LAST指定,將ORDER BY指定的排序欄位為空值的記錄放在後邊;

⑥ linq to sql 如何返回兩個日期的天數差值

可以這樣 實現://請先: using System.Data.Linq.SqlClient; var query = (from pact in db.Pact
where SqlMethods
.DateDiffDay(pact.PactStateTime, pact.PactEndTime) > 3
select pact).ToList();

⑦ 請問一下SQL中的CASE When 在Linq中應該如何去使用

三四項簡單的處理可以用三目表達式直接寫;
四項以上或者有復雜的處理最好就使用外接函數或者自定義資料庫函數或者資料庫存儲過程了。

⑧ 如何於LINQ to Entities中使用SQL Server的用戶自定義函數

WP7 是不支持SQLSERVER地.........
芒果開始支持SQL Server CE,使用語法什麼的跟winform和webform一樣。

⑨ Linq To Sql 如何實現遞歸查詢 樹形結構

--構造測試數據: 只作演示用
CREATE TABLE [dbo].[Tim_LinqTable](
[Id] int PRIMARY KEY IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Parent] int NOT NULL,
)
GO

INSERT INTO [Tim_LinqTable]
SELECT 'A',0 UNION ALL
SELECT 'A1',1 UNION ALL
SELECT 'A2',1 UNION ALL
SELECT 'B1',2 UNION ALL
SELECT 'B2',3 UNION ALL
SELECT 'C1',4 UNION ALL
SELECT 'C2',4 UNION ALL
SELECT 'D1',5 UNION ALL
SELECT 'D2',5 UNION ALL
SELECT 'D3',5
GO

WITH temp
AS
(
SELECT * FROM [Tim_LinqTable] WHERE Parent = 3
UNION ALL
SELECT m.* FROM [Tim_LinqTable] AS m
INNER JOIN temp AS child ON m.Parent = child.Id
)
SELECT * FROM temp
GO

--查詢 Parent=3 的所有子數據結果如下:
Id Name Parent
----------- -------------------------------------------------- -----------
5 B2 3
8 D1 5
9 D2 5
10 D3 5

(4 row(s) affected)

//好,下邊來看看用C#怎麼實現上邊的SQL語句吧:
void Main()
{
var query=GetClassID(3);
Console.WriteLine("Id\tName\tParent");
query.ToList().ForEach(q=>Console.WriteLine("{0}\t{1}\t{2}",q.Id,q.Name,q.Parent));
/*
Id Name Parent
5 B2 3
8 D1 5
9 D2 5
10 D3 5
*/
}
public IEnumerable<Tim_LinqTable> GetClassID(int p_id)
{
var query = from c in this.Tim_LinqTables
where c.Parent == p_id
select c;

return query.ToList().Concat(query.ToList().SelectMany(t => GetClassID(t.Id)));
}

熱點內容
cvr網路存儲 發布:2025-01-24 17:24:52 瀏覽:415
腿套壓縮襪 發布:2025-01-24 17:05:16 瀏覽:458
電腦如何將安卓軟體卸載干凈 發布:2025-01-24 17:03:06 瀏覽:489
hello密碼怎麼破解 發布:2025-01-24 17:03:06 瀏覽:73
pspfifa無緩存 發布:2025-01-24 16:45:13 瀏覽:165
androidhandler機制 發布:2025-01-24 16:41:10 瀏覽:936
安卓系統如何下載aov 發布:2025-01-24 16:29:53 瀏覽:573
iptables允許ip訪問 發布:2025-01-24 16:19:58 瀏覽:932
安卓80如何識別存儲卡許可權 發布:2025-01-24 16:19:54 瀏覽:232
存儲介質價格 發布:2025-01-24 16:19:18 瀏覽:151