转: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 Simple

 public void LinqToSqlInsert02() {
public void LinqToSqlInsert02() {

 Northwind db2 = new Northwind(connString);
    Northwind db2 = new Northwind(connString);

 DataLoadOptions ds = new DataLoadOptions();
    DataLoadOptions ds = new DataLoadOptions();

 ds.LoadWith<nwind.Category>(p => p.Products);
    ds.LoadWith<nwind.Category>(p => p.Products);
 db2.LoadOptions = ds;
    db2.LoadOptions = ds;

 var q = (
    var q = (
 from c in db2.Categories
        from c in db2.Categories
 where c.CategoryName == "Widgets"
        where c.CategoryName == "Widgets"
 select c);
        select c);


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


 Console.WriteLine();
    Console.WriteLine();
 Console.WriteLine("*** INSERT ***");
    Console.WriteLine("*** INSERT ***");
 var newCategory = new Category { CategoryName = "Widgets",
    var newCategory = new Category { CategoryName = "Widgets",
 Description = "Widgets are the customer-facing analogues " +
                                     Description = "Widgets are the customer-facing analogues " +
 "to sprockets and cogs."
                                                   "to sprockets and cogs."
 };
                                   };
 var newProduct = new Product { ProductName = "Blue Widget",
    var newProduct = new Product { ProductName = "Blue Widget",
 UnitPrice = 34.56M,
                                   UnitPrice = 34.56M,
 Category = newCategory
                                   Category = newCategory
 };
                                 };
 db2.Categories.InsertOnSubmit(newCategory);
    db2.Categories.InsertOnSubmit(newCategory);
 db2.SubmitChanges();
    db2.SubmitChanges();


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

 Cleanup65();  // Restore previous database state
    Cleanup65();  // Restore previous database state
 }
}
 public void LinqToSqlInsert03() {
public void LinqToSqlInsert03() {

 Northwind db2 = new Northwind(connString);
    Northwind db2 = new Northwind(connString);

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

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



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


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


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



 Cleanup66();  // Restore previous database state
    Cleanup66();  // Restore previous database state
 }
}
 
 update simple
update simple
 update mutiple
update mutiple
 public void LinqToSqlInsert06() {
public void LinqToSqlInsert06() {
 Console.WriteLine("*** BEFORE ***");
    Console.WriteLine("*** BEFORE ***");
 ObjectDumper.Write(from c in db.OrderDetails where c.OrderID == 10255 select c);
    ObjectDumper.Write(from c in db.OrderDetails where c.OrderID == 10255 select c);


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

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


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



 Cleanup69();  // Restore previous database state
    Cleanup69();  // Restore previous database state
 }
}
 
 delete one to many
delete one to many
 where
where
 public void LinqToSqlWhere02() {
public void LinqToSqlWhere02() {
 var q =
    var q =
 from e in db.Employees
        from e in db.Employees
 where e.HireDate >= new DateTime(1994, 1, 1)
        where e.HireDate >= new DateTime(1994, 1, 1)
 select e;
        select e;

 ObjectDumper.Write(q);
    ObjectDumper.Write(q);
 }
}
 
 first condition
first condition
 public void LinqToSqlSelect01() {
public void LinqToSqlSelect01() {
 var q =
    var q =
 from c in db.Customers
        from c in db.Customers
 select c.ContactName;
        select c.ContactName;

 ObjectDumper.Write(q);
    ObjectDumper.Write(q);
 }
}
 
 public void LinqToSqlSelect04() {
public void LinqToSqlSelect04() {
 var q =
    var q =
 from p in db.Products
        from p in db.Products
 select new {p.ProductID, HalfPrice = p.UnitPrice / 2};
        select new {p.ProductID, HalfPrice = p.UnitPrice / 2};
 ObjectDumper.Write(q, 1);
    ObjectDumper.Write(q, 1);
 }
}
 
 public void LinqToSqlSelect05() {
public void LinqToSqlSelect05() {
 var q =
    var q =
 from p in db.Products
        from p in db.Products
 select new {p.ProductName, Availability = p.UnitsInStock - p.UnitsOnOrder < 0 ? "Out Of Stock": "In Stock"};
        select new {p.ProductName, Availability = p.UnitsInStock - p.UnitsOnOrder < 0 ? "Out Of Stock": "In Stock"};

 ObjectDumper.Write(q, 1);
    ObjectDumper.Write(q, 1);
 }
}
 
 public void LinqToSqlSelect10() {
public void LinqToSqlSelect10() {
 var q = (
    var q = (
 from c in db.Customers
        from c in db.Customers
 select c.City )
        select c.City )
 .Distinct();
        .Distinct();

 ObjectDumper.Write(q);
    ObjectDumper.Write(q);
 }
}
 
 public void LinqToSqlCount01() {
public void LinqToSqlCount01() {
 var q = db.Customers.Count();
    var q = db.Customers.Count();
 Console.WriteLine(q);
    Console.WriteLine(q);
 }
}
 public void LinqToSqlCount02() {
public void LinqToSqlCount02() {
 var q = db.Products.Count(p => !p.Discontinued);
    var q = db.Products.Count(p => !p.Discontinued);
 Console.WriteLine(q);
    Console.WriteLine(q);
 }
}
 public void LinqToSqlCount03() {
public void LinqToSqlCount03() {
 var q = db.Orders.Select(o => o.Freight).Sum();
    var q = db.Orders.Select(o => o.Freight).Sum();
 Console.WriteLine(q);
    Console.WriteLine(q);
 }
}
 public void LinqToSqlCount05() {
public void LinqToSqlCount05() {
 var q = db.Products.Select(p => p.UnitPrice).Min();
    var q = db.Products.Select(p => p.UnitPrice).Min();
 Console.WriteLine(q);
    Console.WriteLine(q);
 }
}
 public void LinqToSqlCount07() {
public void LinqToSqlCount07() {
 var categories =
    var categories =
 from p in db.Products
        from p in db.Products
 group p by p.CategoryID into g
        group p by p.CategoryID into g
 select new {
        select new {
 CategoryID = g.Key,
            CategoryID = g.Key,
 CheapestProducts =
            CheapestProducts =
 from p2 in g
                from p2 in g
 where p2.UnitPrice == g.Min(p3 => p3.UnitPrice)
                where p2.UnitPrice == g.Min(p3 => p3.UnitPrice)
 select p2
                select p2
 };
        };

 ObjectDumper.Write(categories, 1);
    ObjectDumper.Write(categories, 1);
 }
}
 public void LinqToSqlCount08() {
public void LinqToSqlCount08() {
 var q = db.Employees.Select(e => e.HireDate).Max();
    var q = db.Employees.Select(e => e.HireDate).Max();
 Console.WriteLine(q);
    Console.WriteLine(q);
 }
}
 public void LinqToSqlCount11() {
public void LinqToSqlCount11() {
 var q = db.Orders.Select(o => o.Freight).Average();
    var q = db.Orders.Select(o => o.Freight).Average();
 Console.WriteLine(q);
    Console.WriteLine(q);
 }
}
 public void LinqToSqlCount12() {
public void LinqToSqlCount12() {
 var q = db.Products.Average(p => p.UnitPrice);
    var q = db.Products.Average(p => p.UnitPrice);
 Console.WriteLine(q);
    Console.WriteLine(q);
 }
}
 public void LinqToSqlCount13() {
public void LinqToSqlCount13() {
 var categories =
    var categories =
 from p in db.Products
        from p in db.Products
 group p by p.CategoryID into g
        group p by p.CategoryID into g
 select new {
        select new {
 g.Key,
            g.Key, 
 ExpensiveProducts =
            ExpensiveProducts =
 from p2 in g
                from p2 in g
 where p2.UnitPrice > g.Average(p3 => p3.UnitPrice)
                where p2.UnitPrice > g.Average(p3 => p3.UnitPrice)
 select p2
                select p2
 };
        };

 ObjectDumper.Write(categories, 1);
    ObjectDumper.Write(categories, 1);
 }
}
 
 join
join
 public void LinqToSqlPaging01() {
public void LinqToSqlPaging01() {
 var q = (
    var q = (
 from c in db.Customers
        from c in db.Customers
 orderby c.ContactName
        orderby c.ContactName
 select c)
        select c)
 .Skip(50)
        .Skip(50)
 .Take(10);
        .Take(10);

 ObjectDumper.Write(q);
    ObjectDumper.Write(q);
 }
}
 
最近学习LINQ资料不是很多,从CSHARPSAMPLE写一比较有用的例子方便大家学习。
1.INSERT/UPDATE/DELETE
 insert Simple
insert Simple
 public void LinqToSqlInsert02() {
public void LinqToSqlInsert02() {
 Northwind db2 = new Northwind(connString);
    Northwind db2 = new Northwind(connString);
 DataLoadOptions ds = new DataLoadOptions();
    DataLoadOptions ds = new DataLoadOptions();
 ds.LoadWith<nwind.Category>(p => p.Products);
    ds.LoadWith<nwind.Category>(p => p.Products); db2.LoadOptions = ds;
    db2.LoadOptions = ds;
 var q = (
    var q = ( from c in db2.Categories
        from c in db2.Categories where c.CategoryName == "Widgets"
        where c.CategoryName == "Widgets" select c);
        select c);

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

 Console.WriteLine();
    Console.WriteLine(); Console.WriteLine("*** INSERT ***");
    Console.WriteLine("*** INSERT ***"); var newCategory = new Category { CategoryName = "Widgets",
    var newCategory = new Category { CategoryName = "Widgets", Description = "Widgets are the customer-facing analogues " +
                                     Description = "Widgets are the customer-facing analogues " + "to sprockets and cogs."
                                                   "to sprockets and cogs." };
                                   }; var newProduct = new Product { ProductName = "Blue Widget",
    var newProduct = new Product { ProductName = "Blue Widget", UnitPrice = 34.56M,
                                   UnitPrice = 34.56M, Category = newCategory
                                   Category = newCategory };
                                 }; db2.Categories.InsertOnSubmit(newCategory);
    db2.Categories.InsertOnSubmit(newCategory); db2.SubmitChanges();
    db2.SubmitChanges();

 Console.WriteLine();
    Console.WriteLine(); Console.WriteLine("*** AFTER ***");
    Console.WriteLine("*** AFTER ***"); ObjectDumper.Write(q, 1);
    ObjectDumper.Write(q, 1);
 Cleanup65();  // Restore previous database state
    Cleanup65();  // Restore previous database state }
} public void LinqToSqlInsert03() {
public void LinqToSqlInsert03() {
 Northwind db2 = new Northwind(connString);
    Northwind db2 = new Northwind(connString);
 DataLoadOptions ds = new DataLoadOptions();
    DataLoadOptions ds = new DataLoadOptions(); ds.LoadWith<nwind.Employee>(p => p.EmployeeTerritories);
    ds.LoadWith<nwind.Employee>(p => p.EmployeeTerritories); ds.LoadWith<nwind.EmployeeTerritory>(p => p.Territory);
    ds.LoadWith<nwind.EmployeeTerritory>(p => p.Territory);
 db2.LoadOptions = ds;
    db2.LoadOptions = ds; var q = (
    var q = ( from e in db.Employees
        from e in db.Employees where e.FirstName == "Nancy"
        where e.FirstName == "Nancy" select e);
        select e);


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

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

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


 Cleanup66();  // Restore previous database state
    Cleanup66();  // Restore previous database state }
}
 update simple
update simple update mutiple
update mutiple public void LinqToSqlInsert06() {
public void LinqToSqlInsert06() { Console.WriteLine("*** BEFORE ***");
    Console.WriteLine("*** BEFORE ***"); ObjectDumper.Write(from c in db.OrderDetails where c.OrderID == 10255 select c);
    ObjectDumper.Write(from c in db.OrderDetails where c.OrderID == 10255 select c);

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

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


 Cleanup69();  // Restore previous database state
    Cleanup69();  // Restore previous database state }
}
 delete one to many
delete one to many where
where public void LinqToSqlWhere02() {
public void LinqToSqlWhere02() { var q =
    var q = from e in db.Employees
        from e in db.Employees where e.HireDate >= new DateTime(1994, 1, 1)
        where e.HireDate >= new DateTime(1994, 1, 1) select e;
        select e;
 ObjectDumper.Write(q);
    ObjectDumper.Write(q); }
}
 first condition
first condition public void LinqToSqlSelect01() {
public void LinqToSqlSelect01() { var q =
    var q = from c in db.Customers
        from c in db.Customers select c.ContactName;
        select c.ContactName;
 ObjectDumper.Write(q);
    ObjectDumper.Write(q); }
}
 public void LinqToSqlSelect04() {
public void LinqToSqlSelect04() { var q =
    var q = from p in db.Products
        from p in db.Products select new {p.ProductID, HalfPrice = p.UnitPrice / 2};
        select new {p.ProductID, HalfPrice = p.UnitPrice / 2}; ObjectDumper.Write(q, 1);
    ObjectDumper.Write(q, 1); }
}
 public void LinqToSqlSelect05() {
public void LinqToSqlSelect05() { var q =
    var q = from p in db.Products
        from p in db.Products select new {p.ProductName, Availability = p.UnitsInStock - p.UnitsOnOrder < 0 ? "Out Of Stock": "In Stock"};
        select new {p.ProductName, Availability = p.UnitsInStock - p.UnitsOnOrder < 0 ? "Out Of Stock": "In Stock"};
 ObjectDumper.Write(q, 1);
    ObjectDumper.Write(q, 1); }
}
 public void LinqToSqlSelect10() {
public void LinqToSqlSelect10() { var q = (
    var q = ( from c in db.Customers
        from c in db.Customers select c.City )
        select c.City ) .Distinct();
        .Distinct();
 ObjectDumper.Write(q);
    ObjectDumper.Write(q); }
}
 public void LinqToSqlCount01() {
public void LinqToSqlCount01() { var q = db.Customers.Count();
    var q = db.Customers.Count(); Console.WriteLine(q);
    Console.WriteLine(q); }
} public void LinqToSqlCount02() {
public void LinqToSqlCount02() { var q = db.Products.Count(p => !p.Discontinued);
    var q = db.Products.Count(p => !p.Discontinued); Console.WriteLine(q);
    Console.WriteLine(q); }
} public void LinqToSqlCount03() {
public void LinqToSqlCount03() { var q = db.Orders.Select(o => o.Freight).Sum();
    var q = db.Orders.Select(o => o.Freight).Sum(); Console.WriteLine(q);
    Console.WriteLine(q); }
} public void LinqToSqlCount05() {
public void LinqToSqlCount05() { var q = db.Products.Select(p => p.UnitPrice).Min();
    var q = db.Products.Select(p => p.UnitPrice).Min(); Console.WriteLine(q);
    Console.WriteLine(q); }
} public void LinqToSqlCount07() {
public void LinqToSqlCount07() { var categories =
    var categories = from p in db.Products
        from p in db.Products group p by p.CategoryID into g
        group p by p.CategoryID into g select new {
        select new { CategoryID = g.Key,
            CategoryID = g.Key, CheapestProducts =
            CheapestProducts = from p2 in g
                from p2 in g where p2.UnitPrice == g.Min(p3 => p3.UnitPrice)
                where p2.UnitPrice == g.Min(p3 => p3.UnitPrice) select p2
                select p2 };
        };
 ObjectDumper.Write(categories, 1);
    ObjectDumper.Write(categories, 1); }
} public void LinqToSqlCount08() {
public void LinqToSqlCount08() { var q = db.Employees.Select(e => e.HireDate).Max();
    var q = db.Employees.Select(e => e.HireDate).Max(); Console.WriteLine(q);
    Console.WriteLine(q); }
} public void LinqToSqlCount11() {
public void LinqToSqlCount11() { var q = db.Orders.Select(o => o.Freight).Average();
    var q = db.Orders.Select(o => o.Freight).Average(); Console.WriteLine(q);
    Console.WriteLine(q); }
} public void LinqToSqlCount12() {
public void LinqToSqlCount12() { var q = db.Products.Average(p => p.UnitPrice);
    var q = db.Products.Average(p => p.UnitPrice); Console.WriteLine(q);
    Console.WriteLine(q); }
} public void LinqToSqlCount13() {
public void LinqToSqlCount13() { var categories =
    var categories = from p in db.Products
        from p in db.Products group p by p.CategoryID into g
        group p by p.CategoryID into g select new {
        select new { g.Key,
            g.Key,  ExpensiveProducts =
            ExpensiveProducts = from p2 in g
                from p2 in g where p2.UnitPrice > g.Average(p3 => p3.UnitPrice)
                where p2.UnitPrice > g.Average(p3 => p3.UnitPrice) select p2
                select p2 };
        };
 ObjectDumper.Write(categories, 1);
    ObjectDumper.Write(categories, 1); }
}
 join
join public void LinqToSqlPaging01() {
public void LinqToSqlPaging01() { var q = (
    var q = ( from c in db.Customers
        from c in db.Customers orderby c.ContactName
        orderby c.ContactName select c)
        select c) .Skip(50)
        .Skip(50) .Take(10);
        .Take(10);
 ObjectDumper.Write(q);
    ObjectDumper.Write(q); }
}
 
                    
                     
                    
                 
                    
                
 

 var newCustomer
    var newCustomer  
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号