查询语法 & 查询方法

查询语法:不能省略最后的select;查询方法:设计到Lambda表达式,全部返回 可以省略最后的select 延迟加载。

namespace ConsoleApplication
{
   class Program
   {
        static void Main(string[] args)
        {
            //使用集合初始化器给集合赋值
            List<Employees> emp = new List<Employees> 
            { 
               new Employees(){Id=Guid.NewGuid(),Name="C",Sex=0,CompanyName="xx技术有限公司"},
               new Employees(){Id=Guid.NewGuid(),Name="Java",Sex=0,CompanyName="xx培训"},
               new Employees(){Id=Guid.NewGuid(),Name="Python",Sex=0,CompanyName="xx集团"}
            };
            //查询语法:不能省略最后的select
            var query = (from p in emp where p.Name.StartsWith("C") select p).FirstOrDefault();
            //查询方法:设计到Lambda表达式,全部返回 可以省略最后的select 延迟加载
            var query1 = emp.Where(p => p.Name.StartsWith("C")).Select(e => new { e.Name,e.CompanyName});
            foreach (var item in query1)
            {
                Console.WriteLine(item.Name);
            }
            //查询方法
            var query2 = emp.Where(p => p.Name.StartsWith("C")).Select(p => p.CompanyName);
            foreach (var item in query2)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
    }
    public class Employees
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public int Sex { get; set; }
        public string CompanyName { get; set; }
    }
}

Select & Selectmany

  1. Select:用于将集合中的数据整合成一个新数组
  2. Selectmany:用于将集合中的子集合全部合为一个

query syntax 查询语法 & method syntax 方法语法

  1. As a rule when you write LINQ queries, we recommend that you use query syntax whenever possible and method syntax whenever necessary.
  2. Some query operations, such as Count or Max, have no equivalent query expression clause and must therefore be expressed as a method call.

     int highScoreCount = (
         from score in scores
         where score > 80
         select score
     ).Count();
    
     var matchedWorkAreas = from workArea in this.WorkAreas
                             from workAreaOrigin in recipeOrigin.WorkAreas
                             where (workArea.Guid == workAreaOrigin.Guid)
                             select (workArea, workAreaOrigin);