簡體   English   中英

使用組中最大值為 Linq 到 select 的項目

[英]Using Linq to select item with maximum value in a group

我有一張這樣的桌子:

dt = New DataTable()
dt.Columns.AddRange(New DataColumn() {
        New DataColumn("time"),
        New DataColumn("fname", Type.GetType("System.String")),
        New DataColumn("note", Type.GetType("System.String")),
        New DataColumn("du", Type.GetType("System.Int32")),
        New DataColumn("site", Type.GetType("System.String"))})
dt.Rows.Add(New Object() {"2023-01-28 02:01", "aaa1", "xxx11xxxxxxx", 100, "a"})
dt.Rows.Add(New Object() {"2023-01-28 03:01", "bbb1", "xxxx22xxxxxx", 2, "b"})
dt.Rows.Add(New Object() {"2023-01-28 09:01", "ccc", "xxxx33xxxxxx", 3, "c"})
dt.Rows.Add(New Object() {"2023-01-28 02:01", "aaa2", "xxx44xxxxxxx", 3, "a"})
dt.Rows.Add(New Object() {"2023-01-28 03:01", "bbb2", "xxx55xxxxxxx", 53, "b"})
dt.Rows.Add(New Object() {"2023-01-28 03:01", "bbb3", "xxx66xxxxxxx", 89, "b"})
dt.Rows.Add(New Object() {"2023-01-28 01:01", "xxx", "xxx77xxxxxxx", 5, "x"})

我想使用 linq 來查詢上表,從數據表中按時間站點兩列分組,然后獲取具有最大dufname我使用以下代碼:

Dim MYquery = (From p In dt.Select()
    Group p By ID = New With _
                    {Key .time = p("time").ToString.Trim, _
                    Key .site = p("site")} _
                    Into Group Select Group(0)).ToArray.CopyToDataTable

結果如圖所示

所需的表是:

時間 名字 筆記 地點
2023-01-28 02:01 aaa1 xxx11xxxxxxx 100 一種
2023-01-28 03:01 bbb3 xxx55xxxxxxx 53 b
2023-01-28 09:01 抄送 xxxx33xxxxxx 3個 c
2023-01-28 01:01 xxx xxx77xxxxxxx 5個 X

我應該怎么辦?

(我是一個 C# 的人,我希望正確地從 C# 轉換而來):順便說一句,您想要的樣本 output 與您描述的不符。 它應該是站點“b”的 89 行,不是嗎?

Dim myQuery = (From r In dt.Select() 
    Group r By ID = New With {
        Key .Time = r.Field(Of String)("Time"), 
        Key .Site = r.Field(Of String)("Site")
    } Into Group 
    Let mx = Group.Max(Function(gg) gg.Field(Of Integer)("Du"))
    From row In Group
    Where row.Field(Of Integer)("Du") = mx
    Select row).CopyToDataTable()
時間 名字 筆記 地點
2023-01-28 02:01 aaa1 xxx11xxxxxxx 100 一種
2023-01-28 03:01 bbb3 xxx66xxxxxxx 89 b
2023-01-28 09:01 抄送 xxxx33xxxxxx 3個 c
2023-01-28 01:01 xxx xxx77xxxxxxx 5個 X

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM