国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# LINQ和Lambda表達(dá)式對(duì)照

這篇具有很好參考價(jià)值的文章主要介紹了C# LINQ和Lambda表達(dá)式對(duì)照。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

C# LINQ和Lambda表達(dá)式對(duì)照

1. 基本查詢語句

Linq語法:

var data=from a in db.Areas select a ;  

Lamda語法:

var data=db.Areas;  

sql語法:

SELECT * FROM Areas

2. 簡單的WHERE語句

Linq語法:

var data=from a in db.orderInfo where a.orderId > 20 select a ;  

Lamda語法:

var data=db.orderInfo.Where( t=>t.orderId > 20 ) ;  

sql語法:

SELECT * FROM orderInfo WHERE orderId > 20

3. 關(guān)于“COUNT、SUM、MIN、MAX”函數(shù)的語句

Linq語法:

//查詢?cè)摫碇凶畲缶幪?hào)Id  
var data=( from a in db.orderInfo select a ).Max( p=>p.orderId ) ;

//查詢?cè)摫碇凶钚【幪?hào)Id  
var data=( from a in db.orderInfo select a ).Min( p=>p.orderId ) ;

//查詢?cè)摫頂?shù)據(jù)總條數(shù)  
var data=( from a in db.orderInfo select a ).Count() ;

//查詢?cè)摫碇兴邢M(fèi)額的總數(shù)(求和)
var data=( from a in db.orderInfo select a ).Sum( p=>p.orderMoney ) ;  

Lamda語法:

//查詢?cè)摫碇凶畲缶幪?hào)Id  
var data=db.orderInfo.Max( t=>t.orderId );

//查詢?cè)摫碇凶钚【幪?hào)Id 
var data=db.orderInfo.Min( t=>t.orderId ); 

//查詢?cè)摫頂?shù)據(jù)總條數(shù)  
var data=db.orderInfo.Count();

//查詢?cè)摫碇兴邢M(fèi)額的總數(shù)(求和) 
var data=db.orderInfo.Sum( t=>t.orderMoney);

sql語法:

SELECT MAX(orderId) FROM orderInfo

SELECT MIN(orderId) FROM orderInfo

SELECT COUNT(*) FROM orderInfo

SELECT SUM(orderMoney ) FROM orderInfo

?

4. 關(guān)于數(shù)據(jù)排序的語句

Linq語法:

//倒序排序,升序可用ascending關(guān)鍵字  
var data=from a in db.orderInfo 
    where a.orderId > 20 
    orderby a.orderId descending 
    select a ;

Lamda語法:

//情況一,根據(jù)單字段排序:  
//倒序排序,升序可用OrderBy關(guān)鍵字
var data=db.orderInfo.OrderByDescending( t=>t.orderId ).
    Where( t=>t.orderId > 20 ).
    ToList();  

//情況二,根據(jù)多字段主次排序:  
//先按年升序,再按月升序  
var priceMonthEntities = priceMonthApp.GetList().
    OrderBy(t => t.F_Year).
    ThenBy(t => t.F_Month).ToList();

sql語法:

//倒序排序,升序可用ASC關(guān)鍵字
SELECT * FROM orderInfo WHERE orderId > 20 ORDER BY orderId DESC   

?

5. 關(guān)于分頁查詢的語句

Linq語法:

var data=( from a in db.orderInfo select a ).
    Skip((pageIndex-1) * pageSize).
    Take(pageSize).
    ToList();  

Lamda語法:

//pageIndex:當(dāng)前頁碼,pageSize:分頁數(shù)據(jù)顯示條數(shù)  
var data=db.orderInfo.Skip((pageIndex-1)* pageSize).Take(pageSize).ToList();

sql語法:

SELECT TOP pageSize * FROM orderInfo 
WHERE orderId NOT IN(SELECT TOP( ( pageIndex - 1) * pageSize) orderId FROM orderInfo)

?

6. 關(guān)于模糊查詢(like)的語句

Linq語法:

//使用Contains關(guān)鍵字進(jìn)行模糊匹配  
var data= from a in db.orderInfo 
    where a.orderId.Contains(1) 
    select a;

Lamda語法:

//使用Contains關(guān)鍵字進(jìn)行模糊匹配  
var data=db.orderInfo.Where(t=>t.F_UserId.Contains("1")).ToList();

sql語法:

//使用like關(guān)鍵字進(jìn)行模糊匹配  
SELECT * FROM orderInfo WHERE orderId LIKE '%12%'

7. 關(guān)于分組查詢的語句

Linq語法:

var data= from a in db.orderInfo 
    orderby a.orderId descending   
    group a by a.orderType into s select new{  
        s.key,//分組字段  
        s.sMoney=s.Sum(a=>a.orderMoney),//分組后算出總的消費(fèi)額  
        s.maMoney=s.Max(a=>a.orderMoney),//分組后算出最大的消費(fèi)額  
        s.miMoney=s.Min(a=>a.orderMoney)//分組后算出最小的消費(fèi)額  
    };  

Lamda語法:

//使用GroupBy關(guān)鍵字進(jìn)行分組查詢(單個(gè)字段)  
var data=db.orderInfo.GroupBy(p => p.recType).
    Select(t=>t.Key).ToList();  

//使用GroupBy關(guān)鍵字進(jìn)行分組查詢(多個(gè)字段)  
var data=db.orderInfo.GroupBy(p =>new{ p.recType,p.orderId}).
    Select(t=>new{ 
        recType=t.Key.recType,
        orderId=t.Key.orderId
    }).ToList();  

sql語法:

SELECT orderType , SUM(orderMoney), MAX(orderMoney), MIN(orderMoney) 
FROM orderInfo GROUP BY orderType

?

8. 關(guān)于多表關(guān)聯(lián)查詢的語句

Linq語法:

//使用join關(guān)鍵字進(jìn)行表連接  
var data= from a in db.orderInfo 
    join e in db.orderType on a.orderTypeId equals e.id 
    select r ;   

var query=from t in db.orderInfo 
    join s in db.orderType on t.orderTypeId equals s.id 
    select new {  
        orderId=t.id,  
        orderTypeName=s.name,  
        ...  
    }  

Lamda語法:

var data=db.orderInfo.Join(db.orderType,t=>t.orderTypeId,s=>s.id,(t,s)=>t).
    OrderByDescending(t=>t.orderId).  
    Select(  
    t=> new{  
        orderId=t.t.id,  
        orderTypeName=t.s.name,  
        ...  
    }).ToList(); //使用Join關(guān)鍵字進(jìn)行表連接  

EF Core中的寫法:

var data=db.orderInfo.Join(db.orderType,t=>t.orderTypeId,s=>s.id,(t,s)=>new{  
    orderId=s.Id,  
    .....  
}).toList();  

sql語法:(sql語句表關(guān)聯(lián)有多種方法,在此只舉一例)

SELECT * FROM orderInfo o ,orderType t 
WHERE o.orderTypeId=t.id ORDER BY t.createDate

?

9. 關(guān)于in查詢的語句

Linq語法:

var data= from a in db.orderInfo 
    where (new int?[2213,43311,32422]).Contains(a.orderId) 
    select a ;   

Lamda語法:

var data=db.orderInfo.Where(t=>(new int?[2213,43311,32422]).Contains(t.orderId)).ToList();  

sql語法:

SELECT * FROM orderInfo WHERE orderId IN (2213,43311,32422)

10. 關(guān)于去重查詢的語句

Linq語法:

//使用group關(guān)鍵字進(jìn)行表數(shù)據(jù)去重  
var data= from a in db.orderInfo 
    group p by new {a.orderTypeId} into _group 
    select _group.FirstOrDefault(); 

//使用group關(guān)鍵字對(duì)多個(gè)字段進(jìn)行表數(shù)據(jù)去重  
var data= from a in db.orderInfo 
    group p by new {a.orderTypeId,...} into _group 
    select _group.FirstOrDefault(); 

Lamda語法:

//單個(gè)去重:  
// 使用GroupBy關(guān)鍵字進(jìn)行表數(shù)據(jù)去重  
var data=db.orderInfo.GroupBy(t=>t.orderTypeId).Select(r => r.First()).ToList(); 

// 使用DistinctBy關(guān)鍵字進(jìn)行表數(shù)據(jù)去重  
var data=db.orderInfo.DistinctBy(t=>t.orderTypeId).ToList(); 

//多個(gè)字段去重:  
// 使用GroupBy關(guān)鍵字對(duì)多個(gè)字段進(jìn)行表數(shù)據(jù)去重  
var data=db.orderInfo.GroupBy(t=>new{t.orderTypeId,...}).Select(r => r.First()).ToList(); 

// 使用DistinctBy關(guān)鍵字對(duì)多個(gè)字段進(jìn)行表數(shù)據(jù)去重  
var data=db.orderInfo.DistinctBy(t=>new{t.orderTypeId,...}).ToList(); 

sql語法:

-- 使用DISTINCT關(guān)鍵字進(jìn)行表數(shù)據(jù)去重  
SELECT DISTINCT orderTypeId  FROM orderInfo

-- 使用GROUP BY關(guān)鍵字進(jìn)行表數(shù)據(jù)去重 
SELECT orderTypeId FROM orderInfo GROUP BY orderTypeId

11. 內(nèi)連接 INNER JOIN

Linq語法:

var ss = from r in db.Am_recProScheme  
         join w in db.Am_Test_Result on r.rpId equals w.rsId  
         orderby r.rpId descending  
         select r;  

Lamda語法:

var ss1 = db.Am_recProScheme.
    Join(db.Am_Test_Result, p => p.rpId, r => r.rsId, (p, r) => p).
    OrderByDescending(p => p.rpId).ToList();  

sql語法:

SELECT r.* FROM Am_recProScheme AS r INNER JOIN Am_Test_Result AS t ON r.[rpId] = t.[rsId] ORDER BY r.[rpId] DESC 

?

12. 左連接 LEFT JOIN

要求:兩個(gè)DataTable關(guān)聯(lián),查找只在第一個(gè)表中的數(shù)據(jù)

DataTable dt1 = new DataTable("Ta");  
DataTable dt2 = new DataTable("Tb");  
dt1.Columns.Add("ID", typeof(int));  
dt1.Columns.Add("Name", typeof(string));  
dt1.Rows.Add(1, "小明");  
dt1.Rows.Add(2, "小紅");  
dt1.Rows.Add(3, "小黑");  
dt2.Columns.Add("ID", typeof(int));  
dt2.Columns.Add("Name", typeof(string));  
dt2.Rows.Add(1, "小黃");  
dt2.Rows.Add(2, "小紅");  
dt2.Rows.Add(3, "小強(qiáng)");  

Linq語法:

var query = from q1 in dt1.AsEnumerable()  
    join q2 in dt2.AsEnumerable()  
    on q1.Field<string>("Name") equals q2.Field<string>("Name") into tmp  
    from q3 in tmp.DefaultIfEmpty()  
    where q3 == null  
    select new {  
        ID = q1.Field<int>("ID"),  
        Name = q1.Field<string>("Name")  
    };  

Lamda語法 :

var query = dt1.AsEnumerable().GroupJoin(  
        dt2.AsEnumerable(),  
        x => x.Field<string>("Name"),  
        y => y.Field<string>("Name"),  
        (x, y) => y.DefaultIfEmpty(). Where(w => w == null).  
        Select(z => new { ID = x.Field<int>("ID"), Name = x.Field<string>("Name") })  
        ).SelectMany(x => x);  
    foreach (var item in query)  
    {  
        Console.WriteLine($"ID={item.ID}    Name={item.Name}");  
    }  

?

13. 三表連接

sql 語法:

SELECT id, name, jname, cname     
        FROM userinfo u     
        LEFT JOIN job j on u.job = j.jid     
        LEFT JOIN city c on u.city = c.cid    

Linq語法:文章來源地址http://www.zghlxwxcb.cn/news/detail-603986.html

var list = (    
    from u in dc.userinfos    
        join j in dc.jobs on u.job equals j.jid into j_join    
    from x in j_join.DefaultIfEmpty()    
        join c in dc.cities on u.city equals c.cid into c_join    
    from v in c_join.DefaultIfEmpty()    
    select new    
    {    
        id = u.id,    
        name = u.name,    
        jname = x.jname,    
        cname = v.cname,    
        /*u1=u,x1=x,v1=v*/    
        //不要用對(duì)象的方式 因?yàn)閷?duì)象可能為null那么對(duì)象.屬性就會(huì)拋異常    
    }    
).ToList();    

for (var i = 0; i < list.Count(); i++)    
{    
    Console.WriteLine(list[i].name + '\t' + list[i].jname + '\t' + list[i].cname); //字段為null不報(bào)異常    
    //Console.WriteLine(list[i].u1.name+'\t'+list[i].x1.jname+'\t'+list[i].v1.cname+"\r\n"); //對(duì)象x1 v1 有可能為null 拋異常    
}    
Console.ReadLine();  

14. 實(shí)例用法:

//數(shù)據(jù)庫 + 自定義名稱 =new 數(shù)據(jù)庫  
mydbDataContext con = new mydbDataContext();  

//模糊查詢表達(dá)式中用.Contains  
con.car.Where(r=>r.name.Contains(TextBox1.Text.Trim())).ToList(;  

//開頭查用.StartWith  
con.car.Where(r => r.name.StartsWith(TextBox1.Text)).ToList();  

//結(jié)尾查用.EndWith  
con.car.Where(r => r.name.EndsWith(TextBox1.Text)).ToList();  

//最大值  
con.car.Max(r => r.price * r.oil).ToString();  

//最小值  
con.car.Min(r => r.price).ToString();  

//求和  
con.car.Sum(r => r.price).ToString();  

//平均值  
con.car.Average(r => r.price).ToString();  

//升序:  
con.car.OrderBy(r => r.price).ToList();  

//降序:  
con.car.OrderByDescending(r => r.price).ToList();  
  
//上一頁,下一頁,組合查詢:  
int PageCount = 5;//每頁顯示條數(shù)  

//上一頁,PageCount_Label.Text為當(dāng)前頁碼  
int pageNum = Convert.ToInt32(PageCount_Label.Text) - 1;  
Repeater1.DataSource = con.car.Skip((pageNum - 1) * PageCount).Take(PageCount);  
Repeater1.DataBind();   
PageCount_Label.Text = pageNum.ToString();  

//下一頁  
int pageNum = Convert.ToInt32(PageCount_Label.Text) + 1;  
Repeater1.DataSource = con.car.Skip((pageNum - 1) * PageCount).Take(PageCount);  
Repeater1.DataBind();  
PageCount_Label.Text = pageNum.ToString();  

//組合查詢的點(diǎn)擊事件  
List<car> list = con.car.ToList();  
if (TextBox2.Text != "")  
{  
    List<car> list1 = con.car.Where(r => r.name.Contains(TextBox2.Text)).ToList();  
    list = list.Intersect(list1).ToList();  
}  
if (TextBox3.Text != "")  
{  
    List<car> list1 = con.car.Where(r => r.oil == Convert.ToDecimal(TextBox3.Text)).ToList();  
    list = list.Intersect(list1).ToList();  
}  
if (TextBox4.Text != "")  
{  
    List<car> list1 = con.car.Where(r => r.powers == Convert.ToInt32(TextBox4.Text)).ToList();  
    list = list.Intersect(list1).ToList();  
}  
Repeater1.DataSource = list;  
Repeater1.DataBind();

到了這里,關(guān)于C# LINQ和Lambda表達(dá)式對(duì)照的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C# 匿名方法和Lambda表達(dá)式

    1.匿名方法的演變 匿名方法是為了簡化委托的實(shí)現(xiàn),方便調(diào)用委托方法而出現(xiàn)的,同時(shí),匿名方法也是學(xué)好lambda表達(dá)式的基礎(chǔ)。在委托調(diào)用的方法中,如果方法只被調(diào)用一次,這個(gè)時(shí)候我們就沒有必要?jiǎng)?chuàng)建具名方法,從而用匿名方法更為方便。 下面一段代碼是聲明并使用了一

    2024年02月15日
    瀏覽(26)
  • c#中l(wèi)ambda表達(dá)式縮寫推演
  • C#中的Lambda表達(dá)式應(yīng)用方式及場景

    Lambda表達(dá)式在C#中提供了一種更簡潔、靈活的方式來定義匿名函數(shù),并在多種場景下提供了更好的代碼編寫體驗(yàn)。通過使用Lambda表達(dá)式,您可以減少冗余代碼,并以更直觀和簡潔的方式表達(dá)函數(shù)的邏輯。 當(dāng)使用C#中的Lambda表達(dá)式時(shí),有多種應(yīng)用方式和應(yīng)用場景。?下面我將詳細(xì)

    2024年02月12日
    瀏覽(24)
  • 【C# Programming】委托和lambda表達(dá)式、事件

    【C# Programming】委托和lambda表達(dá)式、事件

    目錄 一、委托和lambda表達(dá)式 1.1 委托概述 1.2?委托類型的聲明 1.3?委托的實(shí)例化 1.4?委托的內(nèi)部機(jī)制? 1.5?Lambda 表達(dá)式 1.6?語句lambda 1.7?表達(dá)式lambda 1.8?Lambda表達(dá)式 1.9?通用的委托 1.10?委托沒有結(jié)構(gòu)相等性 1.11?Lambda表達(dá)式和匿名方法的內(nèi)部機(jī)制 1.12 外部變量 1.13?外部變量的

    2024年02月06日
    瀏覽(28)
  • C#學(xué)習(xí)相關(guān)系列之匿名方法和Lambda表達(dá)式

    ????????匿名方法 顧名思義就是這類方法的特點(diǎn)是不需要特別去定義函數(shù)的名字的。一般我們需要一個(gè)函數(shù),但又不想花時(shí)間去命名它的時(shí)候,就可以使用匿名方法。在 C# 中, 匿名方法通常表現(xiàn)為使用?delegate?運(yùn)算符和 Lambda 表達(dá)式。( Lambda 表達(dá)式 的本質(zhì)也是 匿名方法

    2024年02月07日
    瀏覽(26)
  • 【C#進(jìn)階】C#中的委托、事件、回調(diào)函數(shù)、匿名函數(shù)和lambda表達(dá)式

    委托是一種類型,它可以存儲(chǔ)對(duì)一個(gè)或多個(gè)方法的引用。它類似于C/C++中的函數(shù)指針,允許您將方法作為參數(shù)傳遞、存儲(chǔ)和調(diào)用。 寫法: delegate return_type delegate_name( ); return_type :表示委托所引用方法的返回類型。 delegate_name :表示委托的名稱。 parameters :表示委托所引用方法

    2024年02月06日
    瀏覽(21)
  • c# 從零到精通 數(shù)據(jù)庫 定義LINQ查詢表達(dá)式,從數(shù)組中查找長度小于7的所有項(xiàng)

    c# 從零到精通 數(shù)據(jù)庫 定義LINQ查詢表達(dá)式,從數(shù)組中查找長度小于7的所有項(xiàng)

    c# 從零到精通 數(shù)據(jù)庫 定義LINQ查詢表達(dá)式,從數(shù)組中查找長度小于7的所有項(xiàng) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LINQQuery { class Program { static void Main(string[] args) { //定義一個(gè)字符串?dāng)?shù)組 string[] strName = new string[] { “明日科技”,“C#編程詞典”

    2024年02月10日
    瀏覽(23)
  • 如何使用C#中的Lambda表達(dá)式操作Redis Hash結(jié)構(gòu),簡化緩存中對(duì)象屬性的讀寫操作

    如何使用C#中的Lambda表達(dá)式操作Redis Hash結(jié)構(gòu),簡化緩存中對(duì)象屬性的讀寫操作

    Redis是一個(gè)開源的、高性能的、基于內(nèi)存的鍵值數(shù)據(jù)庫,它支持多種數(shù)據(jù)結(jié)構(gòu),如字符串、列表、集合、散列、有序集合等。其中,Redis的散列(Hash)結(jié)構(gòu)是一個(gè)常用的結(jié)構(gòu),今天跟大家分享一個(gè)我的日常操作,如何使用Redis的散列(Hash)結(jié)構(gòu)來緩存和查詢對(duì)象的屬性值,以

    2024年02月16日
    瀏覽(26)
  • 【javaSE】 Lambda表達(dá)式與Lambda表達(dá)式的使用

    【javaSE】 Lambda表達(dá)式與Lambda表達(dá)式的使用

    Lambda表達(dá)式是Java SE 8中一個(gè)重要的新特性。lambda表達(dá)式允許你通過表達(dá)式來代替功能接口。 lambda表達(dá)式就和方法一樣,它提供了一個(gè)正常的參數(shù)列表和一個(gè)使用這些參數(shù)的主體(body,可以是一個(gè)表達(dá)式或一個(gè)代碼塊)。 Lambda 表達(dá)式(Lambda expression) ,基于數(shù)學(xué)中的λ演算得名,也

    2024年02月08日
    瀏覽(27)
  • 以對(duì)象的方式訪問html中的標(biāo)簽,比正則表達(dá)式更好用的方式獲取html中的內(nèi)容,linq方式直接獲取所有的鏈接,更加先進(jìn)的c#版本爬蟲開源庫

    這是我本人自己寫的一個(gè)開源庫,現(xiàn)已經(jīng)發(fā)布到nuget,可以直接在vs的nuget包管理中搜索到,或者可以到nuget官網(wǎng)下載:https://www.nuget.org/packages/ZmjConvert/,也可以到我的個(gè)人網(wǎng)站上下載源碼:https://www.zhaimaojun.cn/P/C%23%e6%a0%87%e7%ad%be%e7%b1%bb%e6%96%87%e6%9c%ac%e5%ba%8f%e5%88%97%e5%8c%96%e5%ba%9

    2024年03月15日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包