• LINQ查询知识总结:案例分


    案例:汽车表car,系列表brand,厂商表productor

    private MyCarDataContext  _Context = new MyCarDataContext();

    (1)查询全部汽车信息

    var list = _Context.Car;

    LINQ语法:var list = from p in _Context.Car select p;

    (2)简单筛选行:查询车系代号是 b002的所有车 关键点:“==”

    var list = _Context.Car.Where(p=>p.Brand=="b002");

    LINQ语法:var list = from p in _Context.Car where p.Brand == "b002" select p;

    (3)简单投影列:只查询三列:名称,价格,排量   关键点:“new{ }”

    var list = _Context.Car.Select(p=>new {p.Name,p.Price,p.Exhaust});

    LINQ语法:var list = from p in _Context.Car select new {p.Name,p.Price,p.Exhaust}

    (4)多条件查询---逻辑与:查询排量大于2000并且价格小于50万的车 关键点:“&&”

    var list = _Context.Car.Where(p=>p.Exhaust>2000&&p.Price<50);

    var list = _Context.Car.Where(p=>p.Exhaust>2000).Where(p=>p.Price<50);

    LINQ语法:var list = from p in _Context.Car where p.Exhaust>2000 && p.Price<50 select p;

    (5)多条件查询---逻辑或:查询排量大于2000或者价格小于50万的车  关键点:“||”

    var  list1 = _Context.Car.where(p=>p.Exhaust>2000);

    var list2 = _Context.Car.Where(p=>p.Price<50);

    var list = list1.union(list2);

    LINQ语法:var list = from p in _Context.Car where p.Exhaust>2000 || p.Price<50 select p;

    (6)模糊查询

    《1》查询包含某个内容:查询汽车名称中包含“马”的车   关键点:“Contains("包含的内容")”

    var list = _Context.Car.Where(p=>p.Name.Contains("马"));

    LINQ语法:var list = from p in _Context.Car where p.Name.Contains("马") select p;

    《2》查询汽车名称以“宝马”开头的车     关键点:“StartWith("内容")”

    var list = _Context.Car.Where(p=>p.Name.StartWith("宝马"));

    LINQ语法:var list = from p in _Context.Car.StartWith("宝马") select p;

    《3》查询汽车名称以“版”结尾的车    关键点:“EndsWith("内容")”

    var list = _Context.Car.Where(p=>p.Name.EndsWith("版"));

    LINQ语法:var list =  from p in _Context.Car where p.Name.EndsWith("版") select p;

    《4》查询汽车名称倒数二三个字是“豪华”的车    关键点:“Substring()”

    var list = _Context.Car.Where(p=>p.Name.Substring(p.Name.Length-3,2));

    LINQ语法:var list = from p in _Context.Car where p.Name.Substring(p.Name.Length-3,2) select p;

    (7)多表查询

    《1》查询厂商是“一汽丰田”下的所有车

    var list = _Context.Car.Where(p=>p.Brand1.Productor.Prod_Name=="一汽丰田");//Brand1和Productor都是数据库表映射出的对象

    LINQ语法:var list  = from p in _Context.Car where p.Brand1.Productor.Prod_Name=="一汽丰田" select p;

    《2》查询与宝马5同厂商的所有车

    string prodCode = (_Context.Car.Where(p=>p.Name.StartWith("宝马5"))).first().Brand1.Productor.Prod_Code;

    var list = _Context.Car.Where(p=>p.Brand1.Productor.Prod_Code==prodCode);

    LINQ语法:string prodCode = (from p in _Context.Car where p.Name.StartWith("宝马5") select p).first().Brand1.Productor.Prod_Code;

    var list = from m in _Context.Car where p.Brand1.Productor.Prod_Code==prodCode select m;

    (7)分页查询

    《1》每页5条记录,查询第3页

    var list = _Context.Car.Skip(2*5).Take(5);//2:代表前两页,5:代表每页显示5条,Skip(2*5):代表跳过前两页(前10条记录),Take(5):代表查询5条记录回来

    LINQ语法:var list = from p in _Context.Car.Skip(2*5).Take(5) select p;

    《2》查询数据库总记录数

    var count = _Context.Car.Count();

    LINQ语法:var list = from p in _Context.Car.Count();

    (8)排序查询

    《1》按价格升序排序

    var list = _Context.Car.Orderby(p=>p.Price) ;

    LINQ语法:var list = from p in _Context.Car orderby p.price select p;

    《2》按价格降序排序

    var list = _Context.Car.OrderByDescending(p=>p.Price);

    LINQ语法:var list = from p in _Context.Car orderby p.Price descending select p;

    (9)取集合中某个对象

    《1》取集合中第一个对象

    Car data = _Context.Car.First();

    LINQ语法:var list = from p in _Context.Car select p;  Car data = list.first();

    《2》取集合中最后一个对象

    Car data = _Context.Car.orderbydescending().first();

    也可以这样:

    var list = _Context.Car.orderbydescending().ToList();//转化为内存中的对象

    Car data = list.Last();

    《3》取集合中的某个(如第五个)对象:思路--去掉该对象前面的所有对象,取下一个对象即可

    var list = _Context.Car.Skip(4).Take(1);

    (10)聚合函数(Sum(),Average(),Max(),Min())

    使用实例:

    var list = _Context.Car.Sum(p=p.Price).value.tostring();

    (11)Distinct关键字(去除查询出的记录中重复的记录)

    使用实例:

    var list = _Context.Car.Select(p=>p.Name).Distinct();

  • 相关阅读:
    13.字符串压缩算法
    12.字符串全部替换指定文本
    46.数字到字符串的转换
    45.切割字符串并精确分配内存
    44.字符串删除指定字符或者字符串
    11.表达式计算对一串加减乘除带括号进行计算
    43.可变参数实现printf
    关于float与double区别
    float,double与long long哪个更大?
    double 与0比较时有个精度问题,有时需精确到小数点后面几位,例如与>0.0001,而不能与>0比较
  • 原文地址:https://www.cnblogs.com/libaby/p/3716711.html
Copyright © 2020-2023  润新知