国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Linq 那些事兒

2019-11-17 02:57:47
字體:
來源:轉載
供稿:網友

Linq 那些事兒

今天突然好奇當linq進行循環遍歷的時候,如果滿足條件的時候還會不會繼續循環剩余的數據,做了個小實驗。

首先看看上代碼

這個是測試的類public class TestLinq    {        int _Number;        public int Number        {            get            {                Console.WriteLine("讀取Number" + _Number);//這里是為了測試看看是否讀取了number值                return _Number;            }            set { _Number = value; }        }    }
首先看看直接使用linq遍歷list是什么樣的。代碼如下:
class PRogram    {        static void Main(string[] args)        {            List<TestLinq> lstTestLinq = new List<TestLinq>();            for (int i = 0; i < 10; i++)            {                lstTestLinq.Add(new TestLinq() { Number = i });            }            var test = from c in lstTestLinq where c.Number < 8 select c;                        Console.ReadKey();        }    }

效果如下:

沒有看見Console.WriteLine任何值,這樣可以看出如果僅僅是定義了linq代碼,但是沒有去使用的時候,這段linq代碼是不會執行的

繼續看代碼:

 class Program    {        static void Main(string[] args)        {            List<TestLinq> lstTestLinq = new List<TestLinq>();            for (int i = 0; i < 10; i++)            {                lstTestLinq.Add(new TestLinq() { Number = i });            }            var test = from c in lstTestLinq where c.Number < 8 select c;            test.ToList();            Console.ReadKey();        }    }

效果圖:

我們看到linq讀取了所有的數據,加了一句ToList后linq確確實實的執行了如果我換成了ToArray效果也和ToList()一樣,如果我只想取一條數據,那么linq會遍歷所有的么,繼續看

class Program    {        static void Main(string[] args)        {            List<TestLinq> lstTestLinq = new List<TestLinq>();            for (int i = 0; i < 10; i++)            {                lstTestLinq.Add(new TestLinq() { Number = i });            }            var test = from c in lstTestLinq where c.Number < 8 select c;            test.First();            Console.ReadKey();        }    }

效果如下

下面我們繼First或FirstOrDefault方法會讓linq執行,那么skip和take呢,繼續試。

class Program    {        static void Main(string[] args)        {            List<TestLinq> lstTestLinq = new List<TestLinq>();            for (int i = 0; i < 10; i++)            {                lstTestLinq.Add(new TestLinq() { Number = i });            }            var test = from c in lstTestLinq where c.Number < 8 select c;            test.Skip(2).Take(1);            Console.ReadKey();        }    }

效果圖

發現也是沒有執行

下面我們在看其他方法,比如 AsQueryable()和AsEnumerable()方法

效果也是一樣

新人第一次寫博客,深知新人的迷惑,下一篇我們看看EF操作數據庫是不是真的如傳說中的那么爛。

新人的QQ群165609857


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沙坪坝区| 广南县| 海城市| 乌兰察布市| 永靖县| 建始县| 新建县| 南涧| 西乌珠穆沁旗| 卫辉市| 湄潭县| 仙居县| 永靖县| 达尔| 峡江县| 宣汉县| 玛纳斯县| 昭通市| 临猗县| 东城区| 大石桥市| 大厂| 张家港市| 伽师县| 乐平市| 盈江县| 七台河市| 永胜县| 贵德县| 沙雅县| 鹿泉市| 安图县| 台中县| 特克斯县| 华坪县| 池州市| 穆棱市| 汉阴县| 通化县| 富裕县| 寿光市|