c# - 将 SQL 查询转换为 LINQ

标签 c# .net winforms linq linq-to-entities

我有一个名为 visit 的表,其中包含以下列:

visit_Id
member_Id 
visit_Date 
visit_Time 
visit_DateTime 
visit_Status values like (accepted, refused)

我有以下 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";

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

最佳答案

您需要使用 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()
            }

关于c# - 将 SQL 查询转换为 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7352653/

相关文章:

c# - 如何将 Javascript 日期时间转换为 C# 日期时间?

c# - 可滚动面板中的组合框导致问题

c# - 如何在执行其他具有许多重载的方法之前/之后每次执行一个方法?

c# - Xamarin 表单绑定(bind)。如何根据某些条件显示 3 个不同字符串中的 1 个

C# 为什么我的 lock 语句挂起?

c# - Async/Await 和 Task<T> 不返回数据

c# - DataBinding 和 ErrorProvider - 如何提供自定义错误消息?

c# - 从容器中删除控件的最干净的方法是什么?

c# - 连接池是否跨应用共享

c# - 使用 "c#"启动 chrome 地址栏谷歌搜索现在将字符串更改为 "c/#"