Dot-Net
沉迷於 LINQ
好吧,我越用LINQ,越喜歡它!我最近發現自己在工作中使用一些遺留程式碼。它是您經典的 DataSet 和 DataTable 豐富的應用程序。好吧,當添加一些功能時,我發現自己真的只想查詢 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)