作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,我越用 LINQ,就越喜欢它!我最近发现自己在工作中使用一些遗留代码。它是经典的数据集和数据表丰富应用程序。好吧,当添加一些功能时,我发现自己真的只想查询 DataTable 的行以获得我正在寻找的结果。
让我重复一遍...我只是想向 Rows 集合询问我需要的内容,而不是循环并添加到临时集合中。没有循环,没有临时变量,只给我我想要的。
var customerOrderIds = table.Rows.Cast<DataRow>()
.Where(x => (string)x["CUSTOMER_ID"] == customerId)
.Select(x => (string)x["CUSTOMER_ORDER_ID"])
.Distinct();
我的问题是这是否是一件好事,还是我对 LINQ 着迷了? 在我看来,这种从集合中提取数据子集的声明式风格是一件好事,最终更具可读性。但话又说回来,也许我只是被迷住了:)
最佳答案
另一项观察;如果您不使用类型化数据集,您可能还想了解 Field<>
扩展方法:
var customerOrderIds = table.Rows.Cast<DataRow>()
.Where(x => x.Field<string>("CUSTOMER_ID") == customerId)
.Select(x => x.Field<string>("CUSTOMER_ORDER_ID"))
.Distinct();
或者使用查询语法:
var customerOrderIds = (
from row in table.Rows.Cast<DataRow>()
where row.Field<string>("CUSTOMER_ID") == customerId
select row.Field<string>("CUSTOMER_ORDER_ID")
).Distinct();
我并不是说它更好或更坏 - 只是另一个可行的选择。
(其实我不太用DataTable
,所以YMMV)
关于.net - 沉迷于 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/262110/
我是一名优秀的程序员,十分优秀!