在 MVC 视图中将 SQL 转换为 Linq 语句

Convert SQL to Linq statement in MVC view

我试图从我的 MVC 视图中的 table 获取一个不同的列表,但它有一个唯一的主键,并且在 table 中有 1000 行。从本质上讲,这是一个具有海量数据的暂存 table,通过引用 RunID,我可以根据需要 move/update 数据。

在 SQL 术语中,这就是我需要的

Select a.*,Min([ID]) as 'ID'

From
(
SELECT [Group]
      ,[Entity]
      ,[Enterprise]
      ,[RunID]
  FROM [CashManager].[Upload]

  Group By [RunID],[Group]
      ,[Entity]
      ,[Enterprise]) a

      Left join [CashManager].Upload On a.RunID=[CashManager].Upload.RunID

      GRoup by a.RunID, a.[Group], a.[Entity], a.[Enterprise]

在我看来,我有以下内容

 @foreach (var item in Model.GroupBy(u => new {u.RunId, u.Group, u.Entity, u.Enterprise, u.FileName, u.Timestamp, u.Id }))

现在,当我省略 ID 列(这是主键)时,我得到了我需要的答案(根据行),但是在编辑等时我需要 ID 值,所以它不起作用。

因此,如果您能帮助我正确理解我的观点陈述,将不胜感激

您必须更正您的 SQL 查询

Select 
   S.[Group],
   S.[Entity],
   S.[Enterprise],
   S.[RunID],
   S.[ID]
FROM
(
  SELECT 
     a.[Group],
     a.[Entity],
     a.[Enterprise],
     a.[RunID],
     a.[ID],
     ROW_NUMBER() OVER (
       PARTTION BY a.[RunID], a.[Group], a.[Entity], a.[Enterprise] ORDER BY a.[ID]
     ) AS RN
  FROM [CashManager].[Upload] a
) S
WHERE S.RN = 1

回答未来的问题:无法通过纯 EF Core LINQ,因为它不支持 Window 函数。

最后我决定走另一条路,并使用 Azure 数据工厂功能解决了我的问题(我已经在我的项目中使用它)

我使用查询来填充我的数据集