Linq select 语法

文档:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

1.可以对查询出来的结果做一些转换,下面的例子在数组中查找以"B"开头的名字,然后全部转成小写输出

string[] names = { "Jack", "Bob", "Bill", "Catty", "Willam" };
            var rs = from n in names
                     where n.StartsWith("B")
                     select n.ToLower();
            foreach (var item in rs)
            {
                Response.Write(item+"<br />");
            }

2.返回匿名类型,只返回需要的信息

var users = from c in UserList
                        where c.Mobile.StartsWith("135")
                        select new
                               {
                                   Name = c.Name,
                                   Contact = c.Address + " " + c.Mobile
                               };

3.使用原数组,产生两组新数组

public void Linq9()
{
    string[] words = { "aPPLE", "BlUeBeRrY", "cHeRry" }; 

    var upperLowerWords =
        from w in words
        select new { Upper = w.ToUpper(), Lower = w.ToLower() }; 

    foreach (var ul in upperLowerWords)
    {
        Console.WriteLine("Uppercase: {0}, Lowercase: {1}", ul.Upper, ul.Lower);
    }
}

4.判断数字是否与他的下标一致

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

            var numsInPlace = numbers.Select((num, index) => new { Num = num, InPlace = (num == index) });

            Console.WriteLine("Number: In-place?");
            foreach (var n in numsInPlace)
            {
                Response.Write(string.Format("{0}: {1}<br />", n.Num, n.InPlace));
            }

5.获得A小于B的所有可能的集合,返回 拿A中的每个元素和B中的每个元素对比的结果

int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
    int[] numbersB = { 1, 3, 5, 7, 8 }; 

    var pairs =
        from a in numbersA
        from b in numbersB
        where a < b
        select new { a, b }; 

    Console.WriteLine("Pairs where a < b:");
    foreach (var pair in pairs)
    {
        Console.WriteLine("{0} is less than {1}", pair.a, pair.b);
    }

6.从一个集合的子集中过滤,金额小于500的订单

List<Customer> customers = GetCustomerList();

            var orders =
                from c in customers
                from o in c.Orders
                where o.Total < 500.00
                select new { c.CustomerID, o.OrderID, o.Total };

7.查询所有大于指定日期的用户订单

List<Customer> customers = GetCustomerList();
    var orders =
        from c in customers
        from o in c.Orders
        where o.OrderDate >= new DateTime(1998, 1, 1)
        select new { c.CustomerID, o.OrderID, o.OrderDate };

延伸:
List<Customer> customers = GetCustomerList(); 
  
    DateTime cutoffDate = new DateTime(1997, 1, 1); 
  
    var orders = 
        from c in customers 
        where c.Region == "WA" 
        from o in c.Orders 
        where o.OrderDate >= cutoffDate 
        select new { c.CustomerID, o.OrderID }; 

8.代替二重for循环

参考:http://www.cnblogs.com/manupstairs/archive/2012/11/27/2790114.html

http://www.cnblogs.com/lyout/archive/2012/11/28/2792622.html

List<Customer> customers = GetCustomerList(); 

    var customerOrders =
        customers.SelectMany(
            (cust, custIndex) =>
            cust.Orders.Select(o => "Customer #" + (custIndex + 1) + " has an order with OrderID " + o.OrderID));

  

 

时间: 2024-12-23 19:36:11

Linq select 语法的相关文章

linq查询语法和方法

1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: using (NorthwindDataContext db=new NorthwindDataContext()) { //linq查询语法(基本语法) var query = from e in db.Employees where e.FirstName.StartsWith("M") select e; //linq方法语法(基本方法) v

LINQ之路 4:LINQ方法语法

书写LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询语法(Query Expression). LINQ方法语法是非常灵活和重要的,我们在这里将描述使用链接查询运算符的方式来创建复杂的查询,方法语法的本质是通过扩展方法和Lambda表达式来创建查询.C# 3.0对于LINQ表达式还引入了声明式的查询语法,通过查询语法写出的查询比较类似于SQL查询.本篇会对LINQ方法语法进行详细的介绍. 当然,.NET公共语言运行库(CLR)并不具有查询语法的概念.所以,编译器会在

ef linq select where dynamic singleordefault

singleordefault(where) 条件不支持动态 所以想要达到目标,就需要转换思路,把where在前面调用,然后再接,代码如下 public TResult GetSingle<T, TResult>(Expression<Func<T, bool>> exWhere, Expression<Func<T, TResult>> selector) where T : class { using (SysDb<T> db =

select 语法

select 语句主要语法: SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] 比较全的如下: SELECT [ALL | DISTINCT | DISTINCTROW ]

LINQ查询语法

一.LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询语法(Query Expression) 1.方法语法:本质是通过扩展方法和Lambda表达式来创建查询 3.查询语法:查询比较类似于SQL查询 关系:.NET公共语言运行库(CLR)并不具有查询语法的概念.所以,编译器会在程序编译时把查询表达式转换为方法语法,即对扩展方法的调用.所以使用方法语法会让我们更加接近和了解LINQ的实现和本质,并且一些查询只能表示为方法调用,如检索序列中的最大值.最小值元素的查询,他们

Linq基本语法

//从老集合中查询每一个元素d存入新集合 var list = from d in list_dog select d; //编译后会生成对应的标准查询运算符 linq是一种类似于sql 标准的语法糖 list = from d in list_dog where d.Gender==false select d; //排序 list = from d in list_dog orderby d.ID ascending orderby d.Age descending select d; //

LINQ全语法

Northwind dbA = new Northwind(connString); Northwind dbB = new Northwind(connString); using (TransactionScope tx = new TransactionScope()) { var order1 = ( from o in dbA.Orders where o.OrderID == 10248 select o).First(); order1.ShipPostalCode = DateT

Linq基础语法详细

闲言碎语 近期比较忙,但还是想写点什么,就分享一些基础的知识给大家看吧,希望能帮助一些linq新手,如果有其它疑问,可以进右上角群,进行交流探讨,谢谢. 开门见山 读这篇文章之前,我先说下,每一种搜索结果集,我都以三种方式变现出来,为啦更好的理解,希望不要嫌我啰嗦. 1.简单的linq语法 //1 var ss = from r in db.Am_recProScheme select r; //2 var ss1 = db.Am_recProScheme; //3 string sssql =

MySQL(九)之数据表的查询详解(SELECT语法)二

上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等.希望大家能都得到帮助! 在开始之前因为要多表查询,所以搭建好环境: 1)创建数据表suppliers 前面已经有一张表是book表,我们在建立一张suppliers(供应商)表和前面的book表对应. 也就是说 让book中s_id字段值指向suppliers的主键值,创建一个外键约束关系. 其实这里并没有达到真正的外键约束关系,只是模拟,让fruits中的s_id中