将MySQL查询转换为Entity Framework查询语法

时间:2012-03-08 00:06:24

标签: linq entity-framework

有人可以帮助我将这个MySQL查询转换为Entity Framework吗? 我在ASP .NET项目中使用它,但我只知道如何在Entity Framework中进行基本查询。这似乎太复杂了,我现在已经很多个小时都找不到工作的解决方案......

 $rs = mysql_query("SELECT barcode,latitude,longitude,date_time,location_name 
                    FROM sDetails
                    JOIN users on (users.id=sDetails.UserId)  
                    WHERE  (latitude and longitude is not null) 
                       and (latitude <> 100000 and longitude <> 100000)
               and id='$UserId'
            ORDER BY date_time desc");

2 个答案:

答案 0 :(得分:1)

假设您已从数据库生成实体框架模型,您应该能够执行类似(c#示例)的操作:

 var q = context.Details.Where( d => d.UserId = "$UserID" ).
             Where( d => d.latitude.HasValue && d.latitude != 100000 && .. etc ).
             OrderByDescending( d => d.date_time ).
             Select( d => new {d.barcode, d.latitude, d.longitude, etc ... };

我不确定您为什么要加入,因为您没有从用户表中选择任何内容。

答案 1 :(得分:0)

谢谢@Phil 您上面提供的代码似乎主要起作用,但它仍然显示错误 var q = context。 ScanDetails .Where

  

错误3:'System.Web.HttpContext'不包含的定义   'ScanDetails'并且没有扩展方法'ScanDetails'接受第一个   可以找到类型'System.Web.HttpContext'的参数(是吗?   缺少using指令或程序集引用?)

这是我到目前为止的代码:

public class read : IHttpHandler
{
    sqlEntities _db = new sqlEntities();

    public bool IsReusable { get { return true; } }

    public void ProcessRequest(HttpContext context)
    {
        //Write out the JSON you want to return.

       var q = context.ScanDetails.Where( d => d.UserId = "1" ).
         Where( d => d.latitude.HasValue && d.latitude != 100000  ).
         OrderByDescending( d => d.date_time ).
         Select( d => new {d.barcode, d.latitude, d.longitude };


           // stuff to do here

    }


    public IQueryable<ScanDetail> scanData { get; set; }
}