簡體   English   中英

LINQ select top 1 按數組索引分組和排序

[英]LINQ select top 1 grouped and ordered by array indices

我想創建一個 LINQ 表達式,它可以:

  1. 按嵌套數組的第二個索引分組(“Dejan”、“Branko”)
  2. 將第三個索引轉換為 DateTime 並獲取最大 - 最新日期
  3. 基於1和2返回新數組

這是輸入數組:

var input = [
  [
    "5833d9df-a9bb-49a7-a113-d410801af72a",
    "Dejan",
    "2020-12-03",
    "napraviti program za ovaku TODO listu",
    "RADITI"
  ],
  [
    "5833d9df-a9bb-49a7-a113-d410801af72a",
    "Dejan",
    "2020-12-04",
    "napraviti program za ovaku TODO listu",
    "RADITI"
  ],
  [
    "a9130a6f-d157-4a6e-8b70-430793eddcd3",
    "Branko",
    "2020-12-04",
    "Rekao sam mu da ode kod Voje pa cemo online da resimo sve",
    "CEKAM ODGOVOR"
  ],
  [
    "a9130a6f-d157-4a6e-8b70-430793eddcd3",
    "Branko",
    "2020-12-03",
    "Rekao sam mu da ode kod Voje pa cemo online da resimo sve",
    "CEKAM ODGOVOR"
  ]
];

預期 output:

var output = [
  [
    "5833d9df-a9bb-49a7-a113-d410801af72a",
    "Dejan",
    "2020-12-04",
    "napraviti program za ovaku TODO listu",
    "RADITI"
  ],
  [
    "a9130a6f-d157-4a6e-8b70-430793eddcd3",
    "Branko",
    "2020-12-04",
    "Rekao sam mu da ode kod Voje pa cemo online da resimo sve",
    "CEKAM ODGOVOR"
  ]
];

這是我解決問題的嘗試(T-SQL):

SELECT A, B, C, D, E
FROM 
(
  SELECT A, B, C, D, E, ROW_NUMBER() OVER(PARTITION BY B ORDER BY C DESC) RN
  FROM @TABLE
) A
WHERE A.RN = 1

我不知道 LINQ

使用GroupBy並將其指向每個組的第二個條目。 然后,在每個組中,按降序排列第三個條目,並取第一個組條目。

var output = 
    input
    .GroupBy(entry => entry[1])
    .Select(g => g.OrderByDescending(entry => entry[2]).First());

暫無
暫無

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

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