gpt4 book ai didi

.net - 沉迷于 LINQ

转载 作者:行者123 更新时间:2023-12-03 03:47:58 24 4
gpt4 key购买 nike

好吧,我越用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com