【问题标题】:Convert SQL Statement to LINQ VS2010将 SQL 语句转换为 LINQ VS2010
【发布时间】:2012-05-18 00:13:12
【问题描述】:

如果能帮助我将以下 sql 语句转换为 linq,我将不胜感激:

select *
from (
    select 
        *,
        rn = row_number() over (partition by ClientId order by VisitId)
    from
        Visit
) activityWithRn
inner join vw_MasterView on  vw_MasterView.VisitId = activityWithRn.VisitId
where activityWithRn.rn =3

当我使用 Linqer(一个很棒的程序)时,我收到以下错误:

SQL cannot be converted to LINQ: Field [rn = row_number() over (partition by ClientId order by VisitId)] not found in the current Data Context.

提前致谢。

【问题讨论】:

标签: c# sql-server-2008 visual-studio-2010 linqer


【解决方案1】:

我认为row_number() over 的 LINQ 中除了使用 Skip...Take 之外没有任何对应的功能:

var q = (from v in Visit
            join mv in vw_MasterView on v.VisitId equals mv.VisitId 
            orderby v.VisitId
            select v).Skip(2).Take(1);

【讨论】:

  • 谢谢,我收到此错误:找不到“加入”。当前上下文中不存在名称“vw_MasterView”
  • 我希望您已经有一个与 SQL 视图 vw_MasterView 匹配的集合(对象/数据上下文中的集合或对象集合)。该工具将如何为您创建此对象?
  • 我用Linqer测试,是连接到数据上下文的。
  • 也许您需要在两个集合(Visitvw_MaterView)前加上上下文变量名称。类似于dc.Visitdc.vw_MasterView。我没有要测试的 Linqer,抱歉。
猜你喜欢
  • 2013-02-15
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多