C#3.0入门系列(LingQ)(五)-之Where操作

 

从本节开始,本文正式更名为C#3.0 入门系列。先发布一则消息,VS2007 Beta 版本已经发布咯,下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyID=1FF0B35D-0C4A-40B4-915A-5331E11C39E6&displaylang=en
大家快去下载呀,我也好和大家一起体验该版本最新功能呀。
dlinq
也更名为linq to sql .本文也跟着做相应变化,稍候,我会去更新前面的文章。我们先接着讲linq 的语法。
Select
操作
最简单的

1,         

  var q =
                from c in db.Customers
                select c.ContactName;
 

 

 

匿名类的

1,            var q =
                from c in db.Customers
                select new {c.ContactName, c.Phone};
2,            var q =
                from e in db.Employees
                select new {Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone};
3,            var q =
                from p in db.Products
                select new {p.ProductID, HalfPrice = p.UnitPrice / 2};
 

 

 

条件的

         

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

 

 

这种条件的会被翻译成sql 中{case  when  condition  then  else }的。
name
 type 形式的:

          

 var q =
                from e in db.Employees                
                select new Name {FirstName = e.FirstName, LastName = e.LastName};
 

 

 

只所以是name  type 的,是因为Name 类是已经定义好的,也就是说,你可以用这种方式,返回你需要类型的对象集(http://www.my400800.cn).
shaped
形式的:

         

  var q =
                from c in db.Customers
                select new {
                    c.CustomerID,
                    CompanyInfo = new {c.CompanyName, c.City, c.Country},
                    ContactInfo = new {c.ContactName, c.ContactTitle}
                };
 

 

 

该形式,其select 操作使用了匿名对象,而这个匿名对象中,其属性也是个匿名对象。
nested
形式的:

          

 var q =
                from o in db.Orders
                select new {
                    o.OrderID,
                    DiscountedProducts =
                        from od in o.OrderDetails
                        where od.Discount > 0.0
                        select od,
                    FreeShippingDiscount = o.Freight
                };
 

 

 

其返回的对象集中的每个对象DiscountedProducts 属性中,又包含一个小的集合。也就是每个对象也是一个集合类。
Distinct
形式的:

         

  var q = (
                from c in db.Customers
                select c.City )
                .Distinct();
 

 

 

该形式,筛选该字段中不相同的值。会被翻译为
select distinct city from customers

where
操作:
最简单的

1,            var q =
                from c in db.Customers
                where c.City == "London"
                select c;

2,            var q =
                from e in db.Employees
                where e.HireDate >= new DateTime(1994, 1, 1)
                select e;
 

 

 

或与关系的where 条件

1,            var q =
                from p in db.Products
                where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued
                select p;
2,            var q =
                from p in db.Products
                where p.UnitPrice > 10m || p.Discontinued
                select p;
3,            var q =
                db.Products.Where(p=>p.UnitPrice > 10m).Where(p=>p.Discontinued);
 

 

在上例中,1和2语句先被翻译成类似3语句的形式,再被翻译成sql 语句,送回数据服务器。他们基本上一样的。
欠套在first 操作中的where 条件:
first
操作,其实质就是在sql 语句前,加了一个top  1.

1,            Customer cust = db.Customers.First(c => c.CustomerID == "BONAP");
2            Order ord = db.Orders.First(o => o.Freight > 10.00M);
 

 

 

第一个例子,是筛选customerid"BONAP" 的客户,第二个筛选订单运费大于10 的订单。First 操作必须用这种级连的形式。比如

Shipper shipper = db.Shippers.First();

也可以把linqexpression 和级连的形式混合使用,比如第一个例子,加入first 操作,

        

   var q =
                (from c in db.Customers
                where c.City == "London"
                select c).First();
 

 

 

如果加入first 操作,其返回是一个具体的对象,而不是一个集合。如果first 操作没有条件,它只是简单的在sql 语句中添加top  1,如果有条件,它在翻译时,就会加入条件语句。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中提供了一种将Set集合转换为String字符串的方法。可以使用StringUtils.join方法将Set集合转换为String。首先,将Set集合转换为Object数组,然后使用StringUtils.join(array, ",")将数组转换为以逗号分隔的字符串。例如,可以使用以下代码将Set集合转换为String字符串: ```java Set<String> set = new HashSet<String>(); set.add("lingq"); set.add("dengp"); set.add("liuw1"); Object\[\] array = set.toArray(); String splitSetWithComma = StringUtils.join(array, ","); System.out.println("splitSetWithComma:" + splitSetWithComma); ``` 这将输出:splitSetWithComma: lingq,dengp,liuw1。\[1\] #### 引用[.reference_title] - *1* [Set,List 等集合 转成 逗号分隔的字符串](https://blog.csdn.net/ywj776199845/article/details/119778874)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Set(List)与String互转](https://blog.csdn.net/haixing1994/article/details/122622724)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [List,Set集合转成逗号分隔String字符串](https://blog.csdn.net/lizz861109/article/details/120922546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值