最近写了这么一个方法:

        //返回结果大致为:AAGP30PMDRVS56NKpublic string GetUsbDiskSnViaDriveLetter(string strUsbDiskDriveLetter){var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDiskToPartition");foreach (ManagementObject dm in searcher.Get()){//dm["Dependent"] 大致为:\\JIANG-PC\root\cimv2:Win32_LogicalDisk.DeviceID="H:"string strDriveLetter = getValueInQuotes(dm["Dependent"].ToString());if (strDriveLetter == strUsbDiskDriveLetter){//dm["Antecedent"] 大致为:\\JIANG-PC\root\cimv2:Win32_DiskPartition.DeviceID="Disk #1, Partition #0"string[] diskArray = getValueInQuotes(dm["Antecedent"].ToString()).Split(',');string driveNumber = diskArray[0].Remove(0, 6).Trim();var disks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");foreach (ManagementObject disk in disks.Get()){//disk["Name"] 大致为:\\.\PHYSICALDRIVE1//disk["InterfaceType"] 大致为:USBif (disk["Name"].ToString() == ("\\\\.\\PHYSICALDRIVE" + driveNumber) && disk["InterfaceType"].ToString() == "USB"){//disk["PNPDeviceID"] 大致为:USBSTOR\DISK&VEN_TECLAST&PROD_COOLFLASH(S)&REV_1100\AAGP30PMDRVS56NK&0return parseSerialFromDeviceID(disk["PNPDeviceID"].ToString());}}}}return null;}

Resharper插件提示我这个可以转变为一个LINQ表达式,我想它会怎么转呢,于是点了一下,就变成了:

        //返回结果大致为:AAGP30PMDRVS56NKpublic string GetUsbDiskSnViaDriveLetter(string strUsbDiskDriveLetter){var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDiskToPartition");return (from ManagementObject dm in searcher.Get() let strDriveLetter = getValueInQuotes(dm["Dependent"].ToString()) where strDriveLetter == strUsbDiskDriveLetter select getValueInQuotes(dm["Antecedent"].ToString()).Split(',') into diskArray select diskArray[0].Remove(0, 6).Trim() into driveNumber let disks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") from ManagementObject disk in disks.Get() where disk["Name"].ToString() == ("\\\\.\\PHYSICALDRIVE" + driveNumber) && disk["InterfaceType"].ToString() == "USB" select parseSerialFromDeviceID(disk["PNPDeviceID"].ToString())).FirstOrDefault();}

代码貌似少多了,粗一看还以为这是别的语言,但坦白说可读性真差……长长的一行。

感觉Resharper也实在太智能了。

一个蛮复杂的LINQ表达式相关推荐

  1. 模仿国外某小哥,做的一个字符串转动态linq表达式 及 部分扩展

    功能上还有部分的不足,目前还未能实现括号运算等 而且传入的字符串有一定的规则,至少对我个人来说已经是0 -> 1的过程 以下是代码: #region 动态linq帮助类,连接符号,运算符号 // ...

  2. 【More Effective C#】LINQ表达式与方法调用的映射

    LINQ构建在两个概念之上,一种查询语言和一系列将查询语言转换成方法调用的实现.在编译时,编译器将LINQ表达式(LINQ to object)转换成方法调用. .Net基础类库提供了两种扩展方法.S ...

  3. LINQ表达式用法整理

    收集一些Linq表达式中的一些比较常用的写法,希望能给大家工作当中带来一些便利. 1. Where子句条件过滤结果集型(集合数据使用这种,譬如数组.列表数据,同样适用于Datatable等多列数据集) ...

  4. 深入LINQ | 动态构建LINQ表达式

    原文:bit.ly/3fwlKQJ 作者:Jeremy Likness 译者:精致码农-王亮 LINQ 是 Language Integrated Query(语言集成查询)的缩写,是我最喜欢的 .N ...

  5. 动态构建LINQ表达式

    目录 基础 挑战 解决方案:动态表达式 Transaction介绍 参数表达式 逻辑表达式 属性表达式 常量和调用表达式 比较表达式 Lambda表达式和编译 从内存到数据库 结论 LINQ意为语言集 ...

  6. WPF实现一个简单的多运算符表达式计算器

    标题:WPF实现一个简单的多运算符表达式计算器 1.先看下效果图 首先外围给了一个grid 把他分成了两行 第一行用来显示文本框给了一个低于第二行的高度 第二行用来存按钮 窗体的大小自己去调就好了 我 ...

  7. Linq表达式、Lambda表达式你更喜欢哪个?

    什么是Linq表达式?什么是Lambda表达式? 如图: 由此可见Linq表达式和Lambda表达式并没有什么可比性. 那与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在& ...

  8. LINQ to Entities 不支持 LINQ 表达式节点类型“ArrayIndex”

    我就不屁话,能一张图就解决的就不说话了 2015-03-28 14:53:24,440 [10] ERROR log - System.NotSupportedException: LINQ to E ...

  9. Linq表达式和Lambda表达式用法对比

    什么是Linq表达式?什么是Lambda表达式? 前一段时间用到这个只是,在网上也没找到比较简单明了的方法,今天就整理了一下相关知识,有空了再仔细研究研究 public Program() { Lis ...

最新文章

  1. 【OpenCV 4开发详解】图像卷积
  2. 学习笔记Kafka(四)—— Kafka安装配置(3)—— Kafka多代理配置及常用操作
  3. 全志和瑞芯微比较_哪家强_全志瑞芯微海思PK 智能芯片哪家强?
  4. C语言,函数不可返回指向栈内存的指针
  5. Oracle数据库经典50题(附答案),写完不理解的来打我
  6. 医疗行业用户容灾备份方案
  7. 最大流最小割算法证明
  8. PostScript 打印描述语言 介绍
  9. gRPC接口性能测试
  10. MySql(三)——事务和锁
  11. (分布式网络)基于残差网络的多光谱全色图像分布式融合框架
  12. 聚特汇挪车码项目最新反馈
  13. 502粘到手上变硬了怎么办_502胶水把手黏住了怎么办
  14. Mimikatz获取系统密码攻防研究
  15. Eclipse单独设置注释字体加粗
  16. 长江实业全新超甲级商业地标 长江集团中心二期设计理念以人为本
  17. 泰拉瑞亚服务器修改物品,泰拉瑞亚1.4自定义物品名称方法 自定义物品名称详细教程_逗游网...
  18. HMC833 测试板总结
  19. OCH1660全极高灵敏低功耗霍尔开关
  20. C语言数组的五种简单排序,选择法排序,冒泡法排序、交换法排序、插入法排序、折半法排序

热门文章

  1. GDI+ 中发生一般性错误(生成验证码时出现的错误)
  2. 利用交换机解决局域网ARP问题(51CTO博客出书活动)
  3. 程序终于实现跨机器运行——记VC++2005程序开发的一个常见问题
  4. 百度正在加速小程序的开放趋势
  5. Ignite的jdbc与网格的连接方式的查询性能对比
  6. Python学习笔记011——内置函数exec()
  7. 2、ESXI安装出错
  8. ubuntu 安装 codelite
  9. ICO流程,casestudy
  10. awbeci网站之技术篇