将SQL查询转换为LINQ

Eni*_*ate 7 .net c# linq linq-to-entities winforms

我有一个名为visit以下列的表:

visit_Id
member_Id 
visit_Date 
visit_Time 
visit_DateTime 
visit_Status values like (accepted, refused)
Run Code Online (Sandbox Code Playgroud)

我有以下SQL查询:

string sql = @"SELECT CONCAT(UPPER(SUBSTRING(visit_Status, 1, 1)), SUBSTRING(visit_Status FROM 2))  as Status, COUNT('x') AS Visits
   FROM visits
   WHERE visit_Date BETWEEN '2001-09-08' AND '2009-09-09'
   GROUP BY visit_Status";
Run Code Online (Sandbox Code Playgroud)

如何将此SQL转换为LINQ?我的实体名称是dbcontext.在此先感谢您的帮助.

Adu*_*cci 5

您需要使用EntityFunctions

DateTime dateFrom = new DateTime(2001, 9, 8);
DateTime dateTo = new DateTime(2001, 9, 9);

var query = from v in dbcontext.Visits
            where v.visit_Date >= dateFrom && v.visit_Date <= dateTo
            group v by v.visit_Status into vg
            select new
            {
              Status = EntityFunctions.Concat(EntityFunctions.ToUpper(vg.Key[0]),
                                              EntityFunctions.SubString(1, EntityFunctions.Length(vg.Key) -1),
              Visits = vg.Count()
            }
Run Code Online (Sandbox Code Playgroud)