剛開始在學時以為Linq是sql的倒裝句,但後來看別人寫的程式裏,有的可以在後面.linq的方法,但真的不知道怎麼用沒有一個標準,像SQL標準語法,你知道Select後面要接什麼Where後面要接什麼,但Linq你真的不知道他要什麼時候出現你要怎麼用他,都是看別人寫好的範例,然後大概知道一二,但要自已用確腦子一片空白,微軟弄的很多功能,但不知道怎麼在多功能也只是沒人知道,知道了又發現雜亂無章,抽象難懂,以numQuery1=後來看很簡單,但這種就像是sql真正在執行的順序,看得懂也很簡單,是因為學過sql也用的很熟也查過sql原來有一個真正執行順序,語法只是要讓人更容易上手所以用接近人的語法下,但linq真的滿怪而且不是只有在numQuery1=後面這個還有一堆怪用法,但都沒有一個標準的可以學習的地方,語法總有一個標準,但我實在看不出linq的標準在那,只能拿別人寫好的範例來貼,運氣好試用就能用,運氣不好就完全想不出來要怎麼解決, 簡單說SQL就在那裏,我知道怎麼下,linq到底在那裏,完全不知怎麼下
var result = from d in _db.DepartmentTable2s
join u in _db.UserTable2s on d.DepartmentId equals u.DepartmentId
orderby d.DepartmentId
select new { d.DepartmentId, d.DepartmentName, u.UserId, u.UserName };
int[] numbers = { 5, 10, 8, 3, 6, 12 };
//1.Query syntax寫法1
var numQuery1 = from num in numbers
where num % 2 == 0
orderby num
select num;
//2.Method syntax寫法2
var numQuery2 = numbers.Where(x => x % 2 == 0).OrderBy(x => x);
_x.x1 = DapperHelper.QuerySetSql(sql).ToList();
其實我覺得官網的介紹就寫得滿清楚的了~XDDD
不過我還是試看看能不能再把它簡化一點,
當然,如有任何錯誤也請各位先進指教~
先講講Query Syntax
其實LINQ
做的不外乎就是查資料
這件事,
那查資料
這件事,我們簡單分成目標
、目標集合
、資料
和資料集合
四個部分,
註:目標
可能是資料本身
,也可能是資料的一部分
如果您對SQL有一點了解的話,
那您一定看得懂
select 目標
from 資料集合
where 資料 符合條件
// 執行過後就會得到 目標集合
再來您必須知道的是,LINQ
是透過foreach
的概念來實作的,
套用剛剛的四個部分,
那它實作起來大概就會變成
// LINQ Method
foreach(var 資料 in 資料集合)
{
if(資料 符合條件)
{
yield return 目標
}
}
然後我們簡化一下上面的東西,
再比對一下範例,
應該就會比較有感覺了~XDDD
var 目標集合 = from 資料 in 資料集合
where 資料 符合條件
select 目標
var numQuery1 = from num in numbers
where num % 2 == 0
select num;
// orderby先拿掉,怕混淆
至於Method Syntax
首先您必須對Lambda 運算式有一點基本概念才行,
再來其實就大同小異了,
只是把Query Syntax
各個部分抽出來而已,
以您的例子來說就是
var numQuery2 = numbers.Where(x => x % 2 == 0)
// 一樣orderby先拿掉,怕混淆
var 目標集合 = 資料集合.Where(資料 => 資料 符合條件)
// 像這邊會使用Where,主要就是因為 目標 跟 資料 型別相同,所以就不用像Query Syntax一樣還特別把Select寫出來
可以看看高手的文章,介紹很多
相關連結 : https://ithelp.ithome.com.tw/users/20107789/ironman/1574