[英]How to group a table by date and company id in C# and Entity Framework
我有這張桌子:
CREATE TABLE [dbo].[lcr_LogLastAccess]
(
[Id] INT IDENTITY (1, 1) NOT NULL,
[logl_Company] VARCHAR(100) NULL,
[logl_Name] VARCHAR(100) NULL,
[logl_Login] VARCHAR(100) NULL,
[logl_AccessdDate] DATETIME NULL,
[logl_Host] VARCHAR(150) NULL,
[logl_Browser] VARCHAR(100) NULL,
[logl_VersionBrowser] VARCHAR(50) NULL,
[logl_Platform] VARCHAR(50) NULL,
[logl_CreatedOn] DATETIME NULL,
CONSTRAINT [PK_LogLastAccess]
PRIMARY KEY CLUSTERED ([Id] ASC)
);
有了這些數據:
id logl_company logl_AccessdDate
----------------------------------
1 carrefour 22/12/20 19:00
2 express 22/12/20 18:00
3 carrefour 22/12/20 17:00
4 express 22/12/20 16:00
5 mendes 22/12/20 15:00
我需要打印這個:
Carrefour 22/12/20 19:00
Express 22/12/20 18:00
Mendes 22/12/20 15:00
因此,我需要按最近訪問日期 ( logl_AccessdDate
) 對 ( logl_Company
) 進行分組
我嘗試過並覺得我被困在什么地方:
using (var db = new AcessoContext())
{
// var maxSample = db.lcr_LogLastAccess
// .Where(coluna => coluna.logl_AccessdDate == db.lcr_LogLastAccess.Max(coluna => coluna.logl_AccessdDate)) //Pega a maior data e retornar em string
// .First();
// grupos.SelectMany(a => a.Where(b => b.logl_AccessdDate == a.Max(c => c.logl_AccessdDate)));
var lista = new List<AcessoModel>();
var grupos = db.lcr_LogLastAccess.AsEnumerable().GroupBy(coluna => coluna.logl_Company);
foreach (var empresa in grupos)
{
Console.WriteLine(empresa);
}
Console.WriteLine(lista.Count() + "\n");
Console.ReadLine();
// PARA CADA EMPRESA NA COMPANY IMPRIMIR A LINHA INTEIRA QUE A DATA SEJA MAIS RECENTE
}
我的計數說我的列表是空的..我的 foreach 返回
System.Linq.Grouping`2[System.String,CONSOLE_TESTE2.AcessoModel]
如何解決這個問題?
謝謝!
使用下面的LINQ
得到結果 -
var grupos = db.lcr_LogLastAccess.GroupBy(g => g.logl_Company).Select(s => new
{
logl_Company = s.Key,
logl_AccessdDate = s.Max(m => m.logl_AccessdDate)
}).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.