Linq第四天

这天主要是加强前些天的学习,主要学习各种Select 操作:
1. 匿名类
  1. var s = from p in db.Customers
  2.  select new { p.ContactName, p.Phone };
  3.  var ev = from ep in edb.Employees
  4.               slect new { name = ep.LastName + " " + ep.FirstName, phone = ep.HomePhone };
2.条件三目运算
  1. var s=from p in db.Products
  2.                   select new { p.ProductName, Availability = p.UnitsInStock - p.UnitsOnOrder < 0 ? "Out Stock" : "In Stock" };
三目运相翻译成SQL 的{case when condition=true a then else b}
3.Shaped形式
var s = from c in db.Customers
                select new
                {
                    c.CustomerID,
                    CompanyInfo = new { c.CompanyName, c.City, c.Country },
                    ContactInfo = new { c.ContactName, c.ContactTitle }
                };
该形式,其select操作使用了匿名对象,而这个匿名对象中,其属性也是个匿名对象
效果如下图:


从图中可知信息为:顾客ID和公司信息(公司名称,城市,国家)和联系信息(联系人和职位)。
4.Distinct形式
      var s =  (from q in db.Customers
                     select q.City).Distinct();
它相当于SQL:Select Distinct City From Customers
5.嵌套类型形式
SalesInfoDataContext si = new SalesInfoDataContext();
            var s = from o in si.Orders
                    select new
                    {
                        o.OrderID,                    
                        DiscountedProducts = from od in si.OrderDetails
                                             where od.Discount > 0.0
                                             select od,
                        FreeShippingDiscount = o.Freight
                    };
      

            this.dataGridView1.DataSource = s;

返回的对象集中的每个对象DiscountedProducts属性中,又包含一个集合。也就是每个对象也是一个集合类
6.Where 条件过滤
简单过滤
 var s = from p in db.Employees
                    where p.HireDate >= new DateTime(1900, 1, 1)
                    select p;
And 过滤
var s = from p in db.Products
                    where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued
                    select p;       
var s = db.Products.Where(p => p.UnitsInStock <= p.ReorderLevel).Where(p=>p.Discontinued);
上面语句会翻译为下面语句再翻译为SQL,送回数据服务器.上面两语句是等效的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值