Linq to sql

cold

使用linq to sql优点也有缺点,优点是在项目开发过程中可以大大提高效率。缺点是执行效率不如sql 的执行效率高

正文

linqtosql的查询语句

1查询满足条件的记录。例如选择TitleofCourtesy=="Ms",并且根据结果的HireDate排序(返回的是一个结果集)

  var a2 = from e2 in dc1.Employees
                     orderby e2.HireDate
                     where e2.TitleOfCourtesy == "Ms."
                     select e2;

输出:

 foreach (var item in a2)
            { 
                 Console.WriteLine("雇员的日期顺序是{0},雇员的ID的是{1}", item.HireDate, item.EmployeeID);
            }

2简单查询语句

有结果就输出,没结果就输出错误信息

var q = from p in dc.test where p.ID == 23 select p;//查询语句
            if (q.Count() == 0)
            {
                Console.WriteLine("抱歉没有相关信息");


            }
            else
            {


                foreach (var g in q)//输出结果
                {
                    Console.WriteLine("{0},{1}", g.专业, g.ID);
                }
            }

简单查询的另一种形式

 var q2 = from p in dc.test
                     where p.ID == 23
                     select new
                         {
                             p.ID,
                             p.专业
                         };
 var q1 = from p in dc.test where p.ID == 23 select p;//查询语句
            if (q1.Count() == 0)
            {
                Console.WriteLine("抱歉没有相关信息");

            }
            else
            {
                foreach (var q2 in q1)
                {
                    q2.专业 = "车辆";
                }

            }

3去重查询

var q2 = (from a in dc.test select a.ID).Distinct();
            Console.WriteLine("这是不重复的查询");

            foreach (var item in q2)
            {
                Console.WriteLine("学生的ID={0}", item);

            }

4简单更新

 var q1 = from p in dc.test where p.ID == 23 select p;//查询语句
            if (q1.Count() == 0)//返回记录的条数
            {
                Console.WriteLine("抱歉没有相关信息");

            }
            else
            {
                foreach (var q2 in q1)//更新信息
                {
                    q2.专业 = "车辆";
                }

            }

5简单删除

DataClasses1DataContext dc = new DataClasses1DataContext();
test test1 = dc.test.Where(p => p.ID == 23).FirstOrDefault();//删除语句的实现
            dc.test.DeleteOnSubmit(test1);//删除操作
            dc.SubmitChanges();//提交到数据库

6简单添加

因为不知道所添加的数据是否违反约束条件,所以使用了try catch的结构

 try
            {
                test a = new test//生成一条新的纪录
                {

                    ID = 23,
                    专业 = "艺术学院"
                };
                dc.test.InsertOnSubmit(a);//添加操作的实施
                dc.SubmitChanges();//提交改变
            }
            catch (Exception x)
            {
                Console.WriteLine(x);
            }

7Linq to sql 的sum用法

第一种方法

DataClasses1DataContext dc = new DataClasses1DataContext();
var q1 = dc.test.Select(p => p.ID).Sum();
            Console.WriteLine("所有的学生的ID的总数(尽管没啥意义)={0}", q1);

第二种方法

  var q2 = dc.test.Sum(p => p.ID);
            Console.WriteLine("所有的学生的ID的总数(尽管没啥意义)={0}", q2);

8 Linq to sql 的MIN用法

第一种方法

  var q1 = dc.test.Min(p => p.ID);
            Console.WriteLine("学生ID的最小数{0}(尽管没啥意义)", q1);

第二种方法

 var q2 = dc.test.Select(p => p.ID).Min();
            Console.WriteLine("学生ID的最小数{0}(尽管没啥意义)", q1);

MAX同上述。

9 linq to sql的表之间的一对多的关系的处理

//对于多的那张表以EntitySetd的形式出现在单的那张表
            var q =
          from c in dc1.Customers
          from o in c.Orders
          where c.City == "London"
          select o;
            foreach (var item in q)
            {
                Console.WriteLine("符合条件的结果的ID={0}", item.CustomerID);
            }

           //2单表引用多表的信息(这里Orders引用CustomerID,一张订单只有一个客户,但一个客户可以有好多张订单
            var q1 =
                from c in dc1.Orders
                where c.Customers.CustomerID == "ALFK"
                select c;

10 Contains的用法

   string[] customerID_Set =
                    new string[] { "VINET", "TOMSP", "HANAR" };
            var q = (
              from p in dc1.Orders
              where customerID_Set.Contains(p.CustomerID)
              select p).ToList();

            foreach (var item in q)
            {
                Console.WriteLine("订单的customerID={0}", item.CustomerID);

            }

11 Any的用法

 from p in dc1.Customers
            where !p.Orders.Any()//返回有订单的Customers
            select p;
            foreach (var item in q)
            {
                Console.WriteLine("用户的ID={0}", item.CustomerID);
            }
            Console.WriteLine("以上是使用Any的结果");
            var q1 =
                from p in dc1.Customers
                where !p.Orders.Any(p1 => p1.ShipVia >= 3)
                select p;
            foreach (var item in q)
            {
                Console.WriteLine("用户的ID={0}", item.CustomerID);
            }
            Console.WriteLine("以上是使用Any并且使用了条件进行约束的结果");
12 group by的使用
  var q =
           from p in dc1.Orders
           group p by p.EmployeeID into g
           select new
           {

               EmployeeID = g.Key,
               ShipViasum = g.Sum(p => p.ShipVia)
           };

            foreach (var item in q)
            {
                Console.WriteLine("{0},{1}", item.EmployeeID, item.ShipViasum);


            }

        //使用group by的并且计数
            var q23 =
                from p in dc1.Products
                group p by p.CategoryID into g
                select new//匿名使用
                {
                    g.Key,
                    NumProducts = g.Count()
                };
            foreach (var item in q23)
            {
                Console.WriteLine("{0},{1}", item.Key, item.NumProducts);//输出

            }

            Console.WriteLine("以上是使用group by 并且计数的结果");



            var q231 =
                from p in dc1.Products
                group p by p.CategoryID into g
                select new
                {
                    g.Key,
                    Num = g.Count(p => p.UnitPrice > 20)


                };
            foreach (var item in q231)
	{
        Console.WriteLine("{0},{1}", item.Key, item.Num);

	}
            Console.WriteLine("以上是使用group by 并且有条件计数的结果");
            var q232 = from p in dc1.Products
                       group p by p.CategoryID into g
                       where g.Count()>=10
                       select new
                       {
                           g.Key,
                           Num = g.Count(p => p.UnitPrice > 20)


                       };
            foreach (var item in q231)
            {
                Console.WriteLine("{0},{1}", item.Key, item.Num);

            }
            Console.WriteLine("以上是使用group by并且使用了where 并且有条件计数的结果");



















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值