如何在 LINQ 中使用 CAST、CONVERT 和 isNULL?

How to use CAST,CONVERT and isNULL in LINQ?

我有疑问:

SELECT TOP 50 CONVERT(date, o.OrderDate)as OrderDate,ISNULL(rd.SerialNumbers,'') as SerialNumbers,CAST(o.SourceOrderID as varchar(50)) as SourceOrderNumber
From Orders o

已针对问题编辑查询。

var lq= (
                    from o in db.Orders
 select new {,o.Name, o.Company, o.Address, o.Address2, o.City, o.State, o.Country, o.Email, o.Zip, o.Phone, o.ShipName, o.ShipCompany, o.ShipAddress, o.ShipAddress2, o.ShipCity, o.ShipCountry, o.ShipState, o.ShipPhone, o.ShipZip, o.OrderNumber, o.ShippingTotal }
            ).ToList();

我可以在 LINQ 中进行简单的连接和 select,但不知道如何像查询中提到的那样获得 select。

我正在使用 EF

鉴于无法使用 LINQ 实际执行 stringdatetime 的转换作为数据库查询的一部分,建议您使用 AsEnumerable 切换上下文列出 运行 内存中的实际转换

orders.Take(50)
      .AsEnumerable()
      .Select(x => new {
          OrderDate = x.OrderDate.Date,
          SerialNumbers = o.SerialNumbers ?? "",
          SourceOrderNumber = o.SourceOrderID.ToString()
      });

LINQ2SQL 实际上足够聪明来处理代码中的解析:

var q = from c in Customers
where c.PhoneNumber == "9075556658"
select new 
    { 
    SSN = c.SSN, 
    DOB = DateTime.Parse(c.BirthDate)
    };
q.Dump();

我只是 运行 在我自己的数据库上的 LinqPad 中,它运行良好。

注意:这是用 Linq2SQL 测试的,而不是 Entity Framework,它有无法做 Linq2SQL 多年来一直在做的事情的历史。