【问题标题】:How to convert sql to LINQ asp.net C# [closed]如何将 sql 转换为 LINQ asp.net C# [关闭]
【发布时间】:2015-01-13 10:13:33
【问题描述】:

我需要将此 sql 转换为 LINQ

select ud.HindQues, mm.misc_desc
from Account.miscMast mm,Account.userDetails ud
where mm.misc_type='SECQUE' and mm.misc_code=ud.HindQues and ud.UserID='Test'

这个我试过了,但是出错了

using (extractDataContext contex=new extractDataContext())
    {
     var query = (from hq in contex.miscMasts   
                  join ud in contex.userDetails on 
                  new { hq.misc_code }  
                  equals new {ud.HindQues }  where
                  hq.misc_type == "SEC001" orderby hq.sort_order                   
                 select new { hq.misc_code, hq.misc_desc });
        ddlHintQues.DataSource = query;
        ddlHintQues.DataValueField = "misc_code";
        ddlHintQues.DataTextField = "misc_desc";
        ddlHintQues.DataBind();

    }   

【问题讨论】:

  • 什么错误?没有必要猜测。
  • 为什么要将它转换为 LINQ?如果两个实体相关,则只需加载父实体。如果这是一个存储过程,您可以从您使用的任何 ORM 中调用它。如果这是考试,请尝试重写原始 SQL 语句以使用 INNER JOIN 来连接两个表,而不是 WHERE。等效的 LINQ 语句会更容易找到
  • 应该有一个列作为连接的基础。这是哪个专栏?我指的是上面提到的这个Panagiotis。如果您将查询重写为INNER JOIN,您应该为ON ... = .... 写什么
  • 嗨 Steen,Panagiotis 实际上我有两个表,例如 userdetails 和 miscmast ,在这两个表中,我将描述放在 miscmast 表中,并且两个表中都将存在相同的代码,例如 SEC001 存在于两个表现在我想进行内部连接,以便从 miscmast 表中获取描述

标签: c# sql asp.net sql-server linq


【解决方案1】:
    var result=
    from mm in Account.miscMast 
    join ud in Account.userDetails on mm.misc_code equals ud.HindQues
    where mm.misc_type='SECQUE' AND ud.UserID='Test'
    select new {HindQues= ud.HindQues, Decription = mm.misc_desc};

【讨论】:

    【解决方案2】:

    您的联接与 equais 属性不匹配。要使用对象,您应该在匿名对象上定义一些属性。您可以定义许多您需要的属性,生成的 sql 将与这些属性进行连接。也不要忘记调用ToList 来执行查询。

    var query = (from hq in contex.miscMasts   
                      join ud in contex.userDetails on new { code = hq.misc_code } equals new { code = ud.HindQues }
                      where hq.misc_type == "SEC001" 
                      orderby hq.sort_order                   
                      select new { hq.misc_code, hq.misc_desc });
    
    var result = query.ToList();                  
    
    ddlHintQues.DataSource = result;
    ddlHintQues.DataValueField = "misc_code";
    ddlHintQues.DataTextField = "misc_desc";
    
    ddlHintQues.DataBind();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      相关资源
      最近更新 更多