C# Linq基本操作以及into、let关键字

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/IT_choshim/article/details/83658748

概念:“查询”也是一种指令,使用这组指令可以从给定的一个或多个数据源中检索数据,并以指令的形式返回结果。Linq也是一种查询,可以为编程语言提供强大的方便的查询功能,并与其合为一体。

Linq的强大体现在它的简洁 方便的代码量。比如要筛选出list中一个属性的元素,相对于list就要遍历判断;但是你用linq就只需要一句。但是这也会造成一些问题,导致后期比人维护你的项目造成麻烦(哪有最好的东西呀,双刃剑吧 哈哈)

 

From:子句被查询的数据源(相当于for循环)

Where:子句指定元素所满足的过滤条件(相当于if判断)

orderby:表现方式(相当于排序方式,升序、降序。。。)

Select:子句制定查询结果的表现形式,(相当于return)

 

下面用代码来说明问题:

// Linq  Query语句

int[] numbers = { 12, 23, 34, 45, 56, 67 };
            var numQuery = from num in numbers
                           where num % 2 == 0
                           orderby num ascending // ascending 升序(可省略)
                           select num;
            foreach(var n in numQuery)
            {
                Console.WriteLine(n);
            }

// Linq Method语句

var numMethod = numbers.Where(n => n % 2 == 0).OrderBy(n => n);
            foreach(var n in numMethod)
            {
                Console.WriteLine(n);
            }

注意:以上两个语句的代码量相差还是有点大的,Query将每块逻辑分开,而Method将所有逻辑集中于一行来实现。

 

into、let关键字

// Linq  into关键字

List<Peo> peoList = new List<Peo>();
            peoList.Add(new Peo() { name = "lizhi", city = "shanghai" });
            peoList.Add(new Peo() { name = "linqingxia", city = "beijing" });
            peoList.Add(new Peo() { name = "liuyifei", city = "shanghai" });
            var intoLinq = from num in peoList
                           group num by num.city into groupnum
                           where groupnum.Count() >= 2
                           select new { city = groupnum.Key, number = groupnum.Count() };
            foreach(var i in intoLinq)
            {
                Console.WriteLine(i.city + "---" + i.number);
            }

以上示例:into 字面解释意为“打入”,以上事例将遍历proList得到的num筛选出city属性放入groupnum中,这里的groupnam可以看作是一个集合,这个集合存的是city属性。

// Linq  let关键字

string[] strings = { "hello world.", "lin qing xia", "wang zu xian" };
            var strs = from s in strings
                       let words = s.Split(' ')
                       from word in words
                       let w = word.ToUpper()
                       select w;
            foreach(var s in strs)
            {
                Console.WriteLine(s);
            }

以上示例:将遍历的元素进行处理,并将处理结果存放到words,这里的words也可看作一个集合(可以这样理解,具体自己去发掘 嘿嘿)

 

注意:Linq虽然方便,但是并不是适用于所有的条件筛选或者排序。比如背包、商城的根据什么什么排序之类的了。有一些项目会明显指出不可用linq进行排序。貌似是引用底层涉及到太多的拆装箱操作吧 貌似(楼主也是小菜一枚,欢迎改正)

 

展开阅读全文

没有更多推荐了,返回首页