關於Linq中Lambda的一些基礎性問題

來源:互聯網
上載者:User
學習Linq也有些時間了,開始時不是很習慣,越用越發現它的便捷。最近看了和使用了一段時間Lambda運算式,發現這也的確是個好東西。
當我們通過Linq查詢或者其他方式產生了一個IQueryable<T>對象時,比如是在我們從產品表中查詢產品的列表

IQueryable<Product> product = from p in db.Products select p;

如果我們想從這個product列表中取出ProductID為5的一項,我們當然可以用for或者foreach進行遍曆比較,也可以再寫個Linq語句進行下查詢,這幾個方法都完全可以取到指定的ProductID的Product。

for方法

 
      Product proOne;            for (int i = 0; i < product.Count(); i++)
{
if (product.ToList().ElementAt(i).ProductID== 5)
{
proOne = product.ToList().ElementAt(i);
}
}

 foreach方法和for方法類似,不再贅述,

Linq查詢: 

proOne = (from p in product where p.ProductID== 5 select p).ToList().ElementAt(0);

以上方法是不是用點麻煩,並且將Linq延遲查詢的優點抹去了,那麼來看看Lambda運算式方法:

proOne = product.Single(p => p.ProductID== 5);

只需短短的幾個字就完成了上面幾個方法中繁瑣的步驟,且很好的保留了Linq延遲查詢的優點。這樣寫程式是不是感覺很爽呢?
體會到了Lambda運算式的優點,下面再來看看Lambda運算式其他的一些用法,介紹兩種最常用的吧,Where和Select
首先是Select方法:

 var proIDList = product.Select(p => p.ProductID > 5);

可以發現Select方法和Single方法裡面的語句類似,其實他們返回的對象是不同的,Single方法是取出列表中的一個對象。Select方法是取出 列表中合格多個對象的 某個欄位的值 的列表。
在這條語句中Select方法返回的就是個 IEnumerable<int>對象,而Single返回的是一個Product對象,下面的Where方法返回的則是IEnumerable<Product>一個對象列表:

var proList = product.Where(p => p.ProductID > 5);

Where產生的是一列Product對象,要注意和Select方法區別。

這是我學到的一些東西,希望和大家分享,若是有問題,還請博友多多指正。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.