随笔 - 87  文章 - 1  评论 - 610  阅读 - 44万

LinQ操作汇总(From CSharpSamples)

基本方法可以查看这里http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx
最近学习LINQ资料不是很多,从CSHARPSAMPLE写一比较有用的例子方便大家学习。
1.INSERT/UPDATE/DELETE
insert Simple

insert one to Many

public void LinqToSqlInsert03() {

    Northwind db2 
= new Northwind(connString);

    DataLoadOptions ds 
= new DataLoadOptions();
    ds.LoadWith
<nwind.Employee>(p => p.EmployeeTerritories);
    ds.LoadWith
<nwind.EmployeeTerritory>(p => p.Territory);

    db2.LoadOptions 
= ds;
    var q 
= (
        from e 
in db.Employees
        where e.FirstName 
== "Nancy"
        select e);



    Console.WriteLine(
"*** BEFORE ***");
    ObjectDumper.Write(q, 
1);


    Console.WriteLine();
    Console.WriteLine(
"*** INSERT ***");
    var newEmployee 
= new Employee { FirstName = "Kira",
                                     LastName 
= "Smith"
                                   }
;
    var newTerritory 
= new Territory { TerritoryID = "12345",
                                       TerritoryDescription 
= "Anytown",
                                       Region 
= db.Regions.First()
                                     }
;
    var newEmployeeTerritory 
= new EmployeeTerritory { Employee = newEmployee,
                                                       Territory 
= newTerritory
                                                     }
;
    db.Employees.InsertOnSubmit(newEmployee);
    db.Territories.InsertOnSubmit(newTerritory);
    db.EmployeeTerritories.InsertOnSubmit(newEmployeeTerritory);
    db.SubmitChanges();


    Console.WriteLine();
    Console.WriteLine(
"*** AFTER ***");
    ObjectDumper.Write(q, 
2);



    Cleanup66();  
// Restore previous database state
}


update simple
update mutiple



public void LinqToSqlInsert06() {
    Console.WriteLine(
"*** BEFORE ***");
    ObjectDumper.Write(from c 
in db.OrderDetails where c.OrderID == 10255 select c);


    Console.WriteLine();
    Console.WriteLine(
"*** DELETE ***");
    
//Beverages
    OrderDetail orderDetail = db.OrderDetails.First(c => c.OrderID == 10255 && c.ProductID == 36);

    db.OrderDetails.DeleteOnSubmit(orderDetail);
    db.SubmitChanges();


    Console.WriteLine();
    Console.WriteLine(
"*** AFTER ***");
    ClearDBCache();
    ObjectDumper.Write(from c 
in db.OrderDetails where c.OrderID == 10255 select c);



    Cleanup69();  
// Restore previous database state
}


delete one to many
where

public void LinqToSqlWhere02() {
    var q 
=
        from e 
in db.Employees
        where e.HireDate 
>= new DateTime(199411)
        select e;

    ObjectDumper.Write(q);
}


first condition

public void LinqToSqlSelect01() {
    var q 
=
        from c 
in db.Customers
        select c.ContactName;

    ObjectDumper.Write(q);
}


public void LinqToSqlSelect04() {
    var q 
=
        from p 
in db.Products
        select 
new {p.ProductID, HalfPrice = p.UnitPrice / 2};
    ObjectDumper.Write(q, 
1);
}


public void LinqToSqlSelect05() {
    var q 
=
        from p 
in db.Products
        select 
new {p.ProductName, Availability = p.UnitsInStock - p.UnitsOnOrder < 0 ? "Out Of Stock""In Stock"};

    ObjectDumper.Write(q, 
1);
}


public void LinqToSqlSelect10() {
    var q 
= (
        from c 
in db.Customers
        select c.City )
        .Distinct();

    ObjectDumper.Write(q);
}


public void LinqToSqlCount01() {
    var q 
= db.Customers.Count();
    Console.WriteLine(q);
}

public void LinqToSqlCount02() {
    var q 
= db.Products.Count(p => !p.Discontinued);
    Console.WriteLine(q);
}

public void LinqToSqlCount03() {
    var q 
= db.Orders.Select(o => o.Freight).Sum();
    Console.WriteLine(q);
}

public void LinqToSqlCount05() {
    var q 
= db.Products.Select(p => p.UnitPrice).Min();
    Console.WriteLine(q);
}

public void LinqToSqlCount07() {
    var categories 
=
        from p 
in db.Products
        group p by p.CategoryID into g
        select 
new {
            CategoryID 
= g.Key,
            CheapestProducts 
=
                from p2 
in g
                where p2.UnitPrice 
== g.Min(p3 => p3.UnitPrice)
                select p2
        }
;

    ObjectDumper.Write(categories, 
1);
}

public void LinqToSqlCount08() {
    var q 
= db.Employees.Select(e => e.HireDate).Max();
    Console.WriteLine(q);
}

public void LinqToSqlCount11() {
    var q 
= db.Orders.Select(o => o.Freight).Average();
    Console.WriteLine(q);
}

public void LinqToSqlCount12() {
    var q 
= db.Products.Average(p => p.UnitPrice);
    Console.WriteLine(q);
}

public void LinqToSqlCount13() {
    var categories 
=
        from p 
in db.Products
        group p by p.CategoryID into g
        select 
new {
            g.Key, 
            ExpensiveProducts 
=
                from p2 
in g
                where p2.UnitPrice 
> g.Average(p3 => p3.UnitPrice)
                select p2
        }
;

    ObjectDumper.Write(categories, 
1);
}



join

public void LinqToSqlPaging01() {
    var q 
= (
        from c 
in db.Customers
        orderby c.ContactName
        select c)
        .Skip(
50)
        .Take(
10);

    ObjectDumper.Write(q);
}

posted on   edobnet  阅读(1353)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
< 2007年12月 >
25 26 27 28 29 30 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示