一、常用函数

  1. Where:每一项数据都会经过predicate(传入的委托lambda表达式)的测试,如果对元素执行predicate后返回值为True,则这个元素会添加到结果数组中

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gF4y7pLe-1661735378974)(media/d4a4f5649bad08dffabcded57c334f84.png)]

  2. Count:每一项数据都会经过predicate(传入的委托lambda表达式)的测试,如果对元素执行predicate后返回值为True,则返回结果加1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9C8sGJOA-1661735378975)(media/9cd127a13ee3f9cec8d4cf8a54fbca03.png)]

注:假如Count不带任何参数,返回的是集合的元素个数

  1. Any:返回布尔类型,集合中是否有至少一条执行predicate后返回值为True的元素

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S00ntt39-1661735378975)(media/9dc2c0f89267a63ed9aecee1d8033318.png)]

    如果Any不带任何参数,返回的是数组是否至少有一条数据

  2. Order:升序排序

    1. 单字段排序

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lrDHYHeV-1661735378976)(media/44fb6dcf626f8f3abf094fdab45f7e42.png)]

    2. 多字段排序:先按年龄升序,假如年龄一样,则按工资升序

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dHmJVOgL-1661735378976)(media/5d58187bd19a95de70ba7a9f94947f38.png)]

    3. 多字段排序:先按年龄升序,假如年龄一样,则按工资降序

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D7BB9A1A-1661735378976)(media/3087a1827194dee512160c3f2f9c4227.png)]

      注:这种多字段排序不能写两个OrderBy如下,否则它只会用最后一个OrderBy

      IEnumerable<Employee> item5 = list.OrderBy(i => i.Age ).OrderBy(i => i.Salary);

  3. OrderByDescending:倒序排序

  4. OrderBy高级用法:OrderBy要不就按升序,要不就按降序。以下方法可以按指定顺序排列。

    1. 类准备:

      Public Class FeederGetPointXYA

      Public Index As Integer

      Public Index1 As Integer

      Public X As Double

      Public Y As Double

      Public A As Double

      Public mStatue As huanghaiSmallRowStatue

      Sub New(mIndex As Integer, mIndex1 As Integer, ms As huanghaiSmallRowStatue)

      Index = mIndex

      Index1 = mIndex1

      mStatue = ms

      End Sub

      End Class

    2. 实现

      ListAA.Add(New FeederGetPointXYA(1, 8, huanghaiSmallRowStatue.已抛料))

      ListAA.Add(New FeederGetPointXYA(2, 7, huanghaiSmallRowStatue.已抛料))

      ListAA.Add(New FeederGetPointXYA(3, 6, huanghaiSmallRowStatue.拍照贴合点OK))

      ListAA.Add(New FeederGetPointXYA(4, 5, huanghaiSmallRowStatue.拍照贴合点OK))

      ListAA.Add(New FeederGetPointXYA(5, 4, huanghaiSmallRowStatue.Null))

      ListAA.Add(New FeederGetPointXYA(6, 3, huanghaiSmallRowStatue.Null))

      ListAA.Add(New FeederGetPointXYA(7, 2, huanghaiSmallRowStatue.材料已拍照OK))

      ListAA.Add(New FeederGetPointXYA(8, 1, huanghaiSmallRowStatue.Null))

      '自定义排序规则

      Dim SortRule() As huanghaiSmallRowStatue = {huanghaiSmallRowStatue.已抛料, huanghaiSmallRowStatue.Null, huanghaiSmallRowStatue.拍照贴合点OK}

      Dim ListOrder As List(Of huanghaiSmallRowStatue) = SortRule.ToList()

      Dim list00 = ListAA.OrderBy(Function(mmFeeder As FeederGetPointXYA) As Integer

      Dim mIndex As Integer = ListOrder.IndexOf(mmFeeder.mStatue)

      If mIndex <> -1 Then

      Return mIndex

      Else

      Return ListAA.Count - 1 '加这个的好处是SortRule没添加规则时,排在最后(即上述的“材料已拍照OK”类型会排在最后 )

      End If

      End Function).

      ThenByDescending(Function(mmFeeder As FeederGetPointXYA) As Integer '二次排序

      Return mmFeeder.Index

      End Function).ToList

    3. 结果:

      (2, 7, huanghaiSmallRowStatue.已抛料)

      (1, 8, huanghaiSmallRowStatue.已抛料)

      (8, 1, huanghaiSmallRowStatue.Null)

      (6, 3, huanghaiSmallRowStatue.Null)

      (5, 4, huanghaiSmallRowStatue.Null)

      (4, 5, huanghaiSmallRowStatue.拍照贴合点OK)

      (3, 6, huanghaiSmallRowStatue.拍照贴合点OK)

      (7, 2, huanghaiSmallRowStatue.材料已拍照OK)

  5. 限制结果集,获取集合中的某一部分数据

    1. 原数据

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VXaxOPAy-1661735378977)(media/b17fd12a17027b88e7dd5513088de85c.png)]

    2. 跳过3条,取两条

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ER79wd6q-1661735378977)(media/2153bdc6142b0082927661e3abe8be72.png)]

二、防御性函数

  1. Single:有且只有一条数据满足要求。假如有多条或者没有则会报错

    1. 多于一条数据,所以报错

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pjxnxoMT-1661735378978)(media/9486182ba76f06332a2d0e1842abc71d.png)]

    2. 0条数据也会报错

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g7pTk0Ls-1661735378978)(media/ee8f4a6c9dfb194d5bd799d4fb5430e6.png)]

    3. 有且仅有一个,输出唯一一个

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lCgmhOC7-1661735378979)(media/95ab8135d1e869910f0c6f0516db7a9b.png)]

  2. SingleOrDefaule:最多只有一条满足要求。假如有多条则会报错,假如0条或一条,则返回默认值(自定义类会返回Nothing或Null,Integer类型返回0)

    1. 假如一个都没有,返回默认值

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-st6rqyQH-1661735378979)(media/222beb24fe33126b6852a186ea80bb5a.png)]

    2. 假若只有一个,则返回一个

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNr83lzL-1661735378979)(media/5a7b29daf126a027422ee75172434d1c.png)]

  3. First:至少有一条数据,返回第一条。假如一条都没有则会报错。

    1. 一条都没有,报错

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j4FsGMN5-1661735378979)(media/2a951706833a5fcad64b1a4c67f7b63a.png)]

    2. 多条,返回第一条

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YHDoj0U3-1661735378980)(media/fad79f969062c3fdc98d05e0c3e24706.png)]

  4. FirstOrDefault:至少有一条数据,返回第一条,假如都没有则返回默认值

    1. 一条都没有返回默认值

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FpjINUjP-1661735378980)(media/2138efcdd7ae268a7cf62768b8c9bda2.png)]

  5. 以上四种是防御性变成,宁愿报错也不让数据继续错误下去。

三、聚合函数

1、Max/Min/Average/Sum

返回的是不是List的对象,而是double最大值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M0QfcPxa-1661735378981)(media/57d1dbb6853d86abb10ef130d8536096.png)]

2、链式调用Linq时,假如链中间出现一个空值处理方法:在可能结果集合为空的linq后加.DefaultIfEmpty(***)给一个默认值

如下:链式调用Linq求Where筛选后的最大值,但是调用Where后,结果为空。没有符合要求的。再往后的Select

就会报错。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mtWT4DjF-1661735378981)(media/28f339d22be38fd90c28cfc680f04814.png)]

解决办法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ezGMzpWD-1661735378981)(media/cf7de6c44d8c0e961494a861b2930526.png)]

Vb.net 调用方式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NiOL55Tf-1661735378982)(media/2b81dad904fbb02bcacc950ee4aaa36f.png)]

四、分组函数

分组:GroupBy,按传入表达式分组,相同的则分为同一组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C6WvbadE-1661735378982)(media/3d63e61d57a89a06952f6811f10797fd.png)]

也可以用var让编译器自动判断类型。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IQ6m6r3N-1661735378982)(media/e14bc45b5551ba68b1ea2a16d0d4794b.png)]

2、巧用分组函数,实现判断linq数组是否有重复

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h7IZwFwq-1661735378982)(media/3c40931c36d086cfcac0a90a7fb53c74.png)]

Vb.net 调用方式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qah0KiFz-1661735378982)(media/225461c38641437f11b30da50f5edcf3.png)]

四、投影函数

投影:Select(跟SQL数据库中的语句一样)把集合中的的每一项按照某种规则转换生成另外的一个集合

  1. 按年龄生成一个新的数组(因为年龄是整数,所以它会生产一个整形数组),顺序跟原数组顺序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vryDprkj-1661735378982)(media/4c05eb6bdaf6dc438cf8293e3c90b109.png)]

  1. 也可以多字段

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PYkcjo2R-1661735378982)(media/ed8e443e0442911c5aa443ee98c64f3b.png)]

  2. 对集合的所有元素工资减少5000

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d3ZfRI8O-1661735378982)(media/67652fbcc33d5d3fe9af99ae475b8d77.png)]

  1. 也可以映射另一个类的对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EDVGUq9V-1661735378983)(media/31133fa2f3e1d5e3db355438262288ff.png)]

  1. 上述映射到另一个类上,一定要新建一个Dog类,但是程序中往往只是需要中间结果处理一下,可以用匿名类来代替Dog类。省去新定义类的麻烦

    1. 匿名类用到var类型推断,如下

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kDojtXnu-1661735378983)(media/4b0c8555682b86f55681c62c750f10b8.png)]

    2. 所以可以通过匿名类来实现以上功能

      var item11 = list.Select(e => new { Name= e.Name, Age= e.Age });

五、Take

  1. Take从序列的开头返回指定数量的连续元素

    ListAA.Add(New FeederGetPointXYA(1, 6, huanghaiSmallRowStatue.已抛料))

    ListAA.Add(New FeederGetPointXYA(2, 5, huanghaiSmallRowStatue.已抛料))

    ListAA.Add(New FeederGetPointXYA(3, 4, huanghaiSmallRowStatue.拍照贴合点OK))

    ListAA.Add(New FeederGetPointXYA(4, 3, huanghaiSmallRowStatue.拍照贴合点OK))

    ListAA.Add(New FeederGetPointXYA(5, 2, huanghaiSmallRowStatue.Null))

    ListAA.Add(New FeederGetPointXYA(1, 8, huanghaiSmallRowStatue.已贴合))

    ListAA.Add(New FeederGetPointXYA(2, 9, huanghaiSmallRowStatue.已贴合))

    '从序列的开头返回指定数量的连续元素

Dim ListBB = ListAA.Take(3).ToList() '取出数组的前三个元素

  1. TakeWhile是从头开始判断,遇到不满足条件的就中止,无论后续是否还有符合条件的元素

    1. TakeWhile与Where不同,Where是获取符合条件的所有元素

'结果也是取出数组的前三个元素,尽管后面mmFeeder.Index有符合的也不返回了

Dim ListDD = ListAA.TakeWhile(Function(mmFeeder As FeederGetPointXYA) As Boolean

If mmFeeder.Index < 4 Then

Return True

Else

Return False

End If

End Function).ToList

  1. TakeWhile还可以按数组序号取出

    '取出前三个元素

    Dim ListCC = ListAA.TakeWhile(Function(mmFeeder As FeederGetPointXYA, mIdx As Integer) As Boolean

    If mIdx < 3 Then

    Return True

    Else

    Return False

    End If

    End Function).ToList

五、数组删除元素

通过遍历把数组中元素删除时,由于每删除一次,数组个数会发生改变。从而导致for循环报错 集合已修改,如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F1vN3Hur-1661735378983)(media/14b6c295600b707718bd42866069f917.png)]

解决办法:在遍历的数组后面加 .ToArray()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8y2Y3uMo-1661735378984)(media/0b7ba57be7613addf2cc83c5b3239933.png)]

六、综合例子

链式调用:var item12 = list.Where(e => e.Id > 2).GroupBy(e => e.Age).OrderBy(g=>g.Key).Take(3).

Select(h=> new { NL=h.Key ,RS=h.Count() ,PJ=h.Average(k=>k.Salary)}) ;

list.Where(e => e.Id > 2) (取出ID大于2的元素,其中e的类型是Employee)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z6oYXggp-1661735378984)(media/a91ae42c6490486ac333144212418fee.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N9ZxHuue-1661735378984)(media/4f7852660f1a0fccfbd160930ddb34fc.png)]

.GroupBy(e => e.Age) (继续按年龄分组,年龄一样的分为一组存放到Key中,其中e的类型是IGrouping<int,Employee>)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mRKVItX2-1661735378984)(media/a91ae42c6490486ac333144212418fee.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6FQj1BPG-1661735378985)(media/4413808a06180e736009cbf47edd6194.png)]

.OrderBy(g=>g.Key) (组合继续按年龄排序,其中g的类型是IGrouping<int,Employee>)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VRp2Pwq1-1661735378985)(media/a91ae42c6490486ac333144212418fee.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wq14sizz-1661735378986)(media/bd077d586a910df7b1b9f8e1b2de3bfc.png)]

.Take(3) (取出前面3组)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z0zPkZys-1661735378986)(media/a91ae42c6490486ac333144212418fee.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lp8B1R7R-1661735378986)(media/1e2072f25694ad5b417963301e2287ae.png)]

. Select(h=> new { NL=h.Key ,RS=h.Count() ,PJ=h.Average(k=>k.Salary)})

(对于结果的三组中的没一组进行映射,其中h类型是IGrouping<int,Employee>,k类型是Employee)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APErkQio-1661735378986)(media/47b3446f7c56e3befe9295b9fe9c5311.png)]

全部代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Linq

{

class Program

{

static void Main(string[] args)

{

List<Employee> list = new List<Employee>();

list.Add(new Employee { Id = 1, Name = “hh1”, Age = 28, Gender = true, Salary = 5000 });

list.Add(new Employee { Id = 2, Name = “hh2”, Age = 33, Gender = true, Salary = 3000 });

list.Add(new Employee { Id = 3, Name = “hh3”, Age = 35, Gender = false, Salary = 9000 });

list.Add(new Employee { Id = 4, Name = “hh4”, Age = 16, Gender = false, Salary =2000 });

list.Add(new Employee { Id = 5, Name = “hh5”, Age = 25, Gender = true, Salary =1000 });

list.Add(new Employee { Id = 6, Name = “hh6”, Age = 35, Gender = false, Salary = 8000 });

list.Add(new Employee { Id = 7, Name = “hh7”, Age = 35, Gender = false, Salary = 8500 });

list.Add(new Employee { Id = 8, Name = “hh8”, Age = 33, Gender = true, Salary = 8000 });

var item12 = list.Where(e => e.Id > 2).GroupBy(e => e.Age).OrderBy(g=>g.Key).Take(3).

Select(h=> new { NL=h.Key ,RS=h.Count() ,PJ=h.Average(k=>k.Salary)}) ;

foreach (var i in item12)

{

Console.WriteLine(i.NL + “,” + i.RS + “,” + i.PJ);

};

//foreach (var g in item12)

// {

// Console.WriteLine(g.Key);

// foreach (Employee e in g)

// {

// Console.WriteLine(e);

// }

// Console.WriteLine(“*******************”);

// }

Console.ReadKey();

//foreach (string e1 in item12)

//{

// Console.WriteLine(e1);

//};

//var item11 = list.Select(e => new { Name= e.Name, Age= e.Age });

//var item10 = new { Name = “eee”, Age = 20 };

//Console.WriteLine(item10.Name);

//Console.WriteLine(item10.Age);

//Console.ReadKey();

//IEnumerable<Employee> item9 =

// list.Select( e=>new Employee { Id = e.Id, Name = e.Name, Age = e.Age, Gender = e.Gender, Salary = e.Salary - 5000 });

//IEnumerable<Dog> item8 = list.Select(e => new Dog(e.Name, e.Age));

//IEnumerable<string> item8 = list.Select(e => e.Age + “,” + e.Salary);

//foreach (string e1 in item8)

//{

// Console.WriteLine(e1);

//};

//Console.ReadKey();

//var item5 = list.GroupBy(e => e.Age);

//foreach (var g in item5)

//{

// Console.WriteLine(g.Key);

// foreach (Employee e in g)

// {

// Console.WriteLine(e);

// }

// Console.WriteLine(“*******************”);

//}

//double K = list.Max(e => e.Salary);

//Console.WriteLine(K);

//Console.ReadKey();

//IEnumerable<Employee> item5 = list.OrderBy(i => i.Age ).OrderBy(i => i.Salary);

//IEnumerable<Employee> item6 = item5.Skip(3).Take(2);

//foreach (Employee e in item6)

//{

// Console.WriteLine(e);

//}

//Console.ReadKey();

//Employee el6 = list.FirstOrDefault(e => e.Salary > 10000);

//Console.WriteLine(el6);

//Console.ReadKey();

//Employee el5 = list.First(e => e.Salary >1);

//Console.WriteLine(el5);

//Console.ReadKey();

Employee el4 = list.SingleOrDefault(e => e.Name == “123”);

Console.WriteLine(el4);

Console.ReadKey();

//Employee el1= list.Single();

//Employee el2 = list.Single(e=>e.Name== “123”);

Employee el3 = list.Single(e => e.Name == “hh8”);

Console.WriteLine(el3);

Console.ReadKey();

//Any—至少有一条数据,是否至少有一条工资大于100000的

bool RetBln = list.Any(e => e.Salary > 100000);

Console.WriteLine(RetBln);

Console.ReadKey();

//Count—筛选年龄大于30且工资大于8000的集合的个数

int RetCount = list.Count(e => e.Age > 30 && e.Salary > 8000);

Console.WriteLine(RetCount);

Console.ReadKey();

//Where—筛选年龄大于30的集合

IEnumerable<Employee> item1= list.Where(i => i.Age > 30);

foreach (Employee e in item1)

{

Console.WriteLine(e);

}

}

}

class Employee

{

public long Id { get; set; }

public string Name { get; set; }

public int Age { get; set; }

public bool Gender { get; set; }

public int Salary { get; set; }

public override string ToString()

{

return $“ID={Id},Name={Name},Age={Age},Gender={Gender},Salary={Salary}”;

}

}

class Dog

{

public string Name { get; set; }

public int Age { get; set; }

public Dog(string nName,int mAge)

{

Name = nName;

Age = mAge;

}

}

}
= list.Where(i => i.Age > 30);

foreach (Employee e in item1)

{

Console.WriteLine(e);

}

}

}

class Employee

{

public long Id { get; set; }

public string Name { get; set; }

public int Age { get; set; }

public bool Gender { get; set; }

public int Salary { get; set; }

public override string ToString()

{

return $“ID={Id},Name={Name},Age={Age},Gender={Gender},Salary={Salary}”;

}

}

class Dog

{

public string Name { get; set; }

public int Age { get; set; }

public Dog(string nName,int mAge)

{

Name = nName;

Age = mAge;

}

}

}

Linq-20220817更新相关推荐

  1. LinQ“高效”更新

    "高效"!=性能高效=方便 作者:敖士伟 //=======本例解决大量更新实体时,一个属性一个属性地赋值更新较麻烦的问题 LinQ方式实现 /// <summary> ...

  2. Linq学习——更新数据库操作

    用LINQ to SQL建模Northwind数据库 在这之前一起学过LINQ to SQL设计器的使用,下面就使用如下的数据模型: 当使用LINQ to SQL设计器设计以上定义的五个类(Produ ...

  3. c# msi中加入驱动_MongoDB的C#驱动基本使用

    MongoDB的官方C#驱动可以通过这个链接得到.链接提供了.msi和.zip两种方式获取驱动dll文件. 通过这篇文章来介绍C#驱动的基本数据库连接,增删改查操作. 在使用C#驱动的时候,要在工程中 ...

  4. MongoDB的C#驱动基本使用

    MongoDB的官方C#驱动可以通过这个链接得到.链接提供了.msi和.zip两种方式获取驱动dll文件. 通过这篇文章来介绍C#驱动的基本数据库连接,增删改查操作. 在使用C#驱动的时候,要在工程中 ...

  5. asp.net 项目的一点总结 点卡销售/CRM

    总感觉这两个项目练习做起来很没有动力? 是因为项目本身大量重复利用 GridView 展示数据使我感觉到厌烦没有挑战性,还是我能力不够不能想到更有效率的数据应用???总之,能多练习还是不错的,希望下次 ...

  6. sqlserver数据库错误码

    错误 严重性 是否记录事件 说明 -2 超时时间已到. 超时时间在操作完成或服务器没有响应之前已过. (Microsoft SQL Server,错误: -2). -1 在建立与服务器的连接时出错. ...

  7. LINQ之路19:LINQ to XML之X-DOM更新、和Value属性交互

    本篇包含两部分内容:X-DOM更新一节中我们会详细讨论LINQ to XML的更新方式,包括Value的更新.子节点和属性的更新.通过Parent节点实现更新: 和Value属性交互一节会详细讨论XE ...

  8. 使用LINQ更新集合中的所有对象

    有没有办法使用LINQ执行以下操作? foreach (var c in collection) {c.PropertyToSet = value; } 为了澄清,我想遍历集合中的每个对象,然后更新每 ...

  9. 艾伟_转载:使用LINQ to SQL更新数据库(上):问题重重

    在学习LINQ时,我几乎被一个困难所击倒,这就是你从标题中看到的更新数据库的操作.下面我就一步步带你走入这泥潭,请准备好砖头和口水,Follow me. 从最简单的情况入手 我们以Northwind数 ...

  10. 转载:LINQ to SQL更新数据库操作

    翻译整理ScottGu的关于LINQ to SQL的Part 4: Updating our Database .该Post讲解了如何使用LINQ to SQL更新数据库,以及如何整合业务逻辑和自定义 ...

最新文章

  1. python三方库 importlib导入API用法 相对导入 绝对导入
  2. 扩展--使用队列来优化递归操作完成文件下载
  3. LookupError: No installed app with label 'user'
  4. mysql 表关系传递,mysql数据表之间数据相互传递的问题
  5. “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛:I. 丢史蒂芬妮
  6. 资产负债表 公式总结
  7. pp助手苹果版_吃药提醒助手ios版下载-吃药提醒助手苹果版下载v1.0
  8. 人工智能视频教程下载
  9. 微信小程序超市购物+后台管理系统|前后分离VUE
  10. LaTeX的长度单位
  11. 如何用WGDI进行共线性分析(中)
  12. GBase 8c产品高级特性介绍
  13. 学计算机装机,新手学装机:小白如何从零开始学装机
  14. 人工智能有哪些方向?什么方向有前景?
  15. 淘宝天猫商家运营,宝贝标题如何突出卖点,标题编写方法小技巧
  16. Unity win平台 调整窗口大小强制固定比例
  17. Java零基础学习全套视频笔记
  18. 【Pandas总结】第一节 Pandas 简介与Series,DataFrame的创建
  19. saas 软件开发_如何仅使用SaaS开发软件
  20. 高等数学(第七版)同济大学 习题9-5 个人解答

热门文章

  1. 结构化方法和面向对象方法
  2. 手机接收机的功能电路(2)---中频放大器、调制解调器
  3. 2012微软暑期实习笔试
  4. ASP.NET文件的上传和下载
  5. 图形学 正轴测投影 c语言,图形学基础(二)图形变换:3D 平行投影
  6. 精选10个用于Java开发Spring Boot的Eclipse插件
  7. 虹膜识别 讲的特别好
  8. QT软件开发-基于FFMPEG设计录屏与rtsp、rtmp推流软件(支持桌面与摄像头)(一)
  9. 《分销商开发、维护与管理》--王越老师
  10. ipv6 over gre/sit: 通过 6in4 获得 ipv6 地址