LinQ

linQ:语言集成查询(Language INtegrated QueryLINQ)是一项微软技术,新增一种自然查询的SQL语法到.NET Framework的编程语言中,可支持Visual Basic .NET以及C#语言。

  命名空间:System.Linq;

  注意:Linq是在.NET Framework 3.5 中出现的技术,所以在创建新项目的时候必须要选3.5或者更高版本,否则无法使用。

  选择3.5或更高版本的.NET Framework之后,创建的新项目中会自动包含System.Linq的命名空间。

  LINQ to SQL :高集成化的数据访问类,它会自动映射数据库结构,将表名完整映射成为类名,将列名完整映射成字段名

  1LinQ创建

  Linq文件是dbml结尾,一个数据库对应一个Linq文件

  增删改查的方法

  增 

Data0720DataContext con = new Data0720DataContext();//实例化LinQ类
    public UserData()
    {
    }
    public void Insert(Users u)
    {
        con.Users.InsertOnSubmit(u);//Users数据库表明,u 要添加的对象
    con.SubmitChanges();//提交执行添加 
  }

 

  

 public void Delete(string username)
    {
        //根据username查出Users对象
        Users u = con.Users.Where(r => r.UserName == username).FirstOrDefault();
        //删除
        con.Users.DeleteOnSubmit(u);
        con.SubmitChanges();
    }
r => r.UserName == username是Lambda 表达式
参数列表 => 语句或语句块
其中“参数列”中可包含任意个参数(与委托对应),如果参数列中有0个或1个以上参数,则必须使用括号括住参数列

  在 is as 运算符的左侧不允许使用 Lambda

  适用于匿名方法的所有限制也适用于 Lambda 表达式。

  Lambda 表达式(lambda expression)是一个匿名函数Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没   有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

   

public void Update(Users u)
    {
        //查要修改的对象
        Users uuu = con.Users.Where(r => r.UserName == u.UserName).FirstOrDefault();
        if (uuu != null)
        {
            //修改的列
            uuu.PassWord = u.PassWord;
            uuu.NickName = u.NickName;
            uuu.Sex = u.Sex;
            uuu.Birthday = u.Birthday;
            uuu.Nation = u.Nation;
        }
        con.SubmitChanges();
    }

   (以car表为例查询方法)

  1.模糊查(包含).Contains

  public List<Car> Select(string name)
    {
        return con.Car.Where(r => r.Name.Contains(name)).ToList();
    }

  2.开头查:.StartsWith(name)

public List<Car> Select(string name)

{
      return con.Car.Where(r => r.Name.StartsWith(name)).ToList();//开头查
}

 3.结尾:.EndsWith(name)

public List<Car> Select(string name)

{
     return con.Car.Where(r => r.Name.EndsWith(name)).ToList();//结尾
 }

 4.查个数:查所有取集合的个数.Count()

  List<Car> list = new CarData().Select();

    Label1.Text = list.Count.ToString();

 5.最大值:Ma(r => r.price);最小值:Min(;平均值:Average();求和:Sum();查看一列

public decimal? SelectMAX()

    {
        return con.Car.Max(r => r.Price);//取一列的最大值返回decimal?类型
    }

  6.排序:升序:OrderBy(r => r.price)降序:OrderByDescending(r => r.price)

public List<Car> Orderby()

    {
        return con.Car.OrderBy(r => r.Price).ToList();
    }

  7.分页:

public List<car> Select(int count, int number)

    {
        return con.car.Skip(count * (number - 1)).Take(count).ToList();
    } 

8.组合查询:取集合的交集Intersect()

using (mydbsDataContext con = new mydbsDataContext())

        {
            var All = con.Car.AsEnumerable();

            if (TextBox1.Text.Trim().Length > 0)
            {

                var namelist = con.Car.Where(r => r.Name.Contains(TextBox1.Text.Trim())).AsEnumerable();

                All = All.Intersect(namelist);

            }

            if (TextBox2.Text.Trim().Length > 0)

            {

                var brlist = con.Car.Where(r => r.Brand.Contains(TextBox2.Text.Trim())).AsEnumerable();

                All = All.Intersect(brlist);

            }

            if (TextBox3.Text.Trim().Length > 0)

            {
                var oillist = con.Car.Where(r => r.Oil.ToString() == TextBox3.Text.Trim()).AsEnumerable();

                All = All.Intersect(oillist);
            }
            Repeater1.DataSource = All;

            Repeater1.DataBind();

        }

 
原文地址:https://www.cnblogs.com/fuze/p/6377285.html