我尝试将此简单sql
查询转换为linq to sql
查询
SELECT * INTO temptable from EFESRDP0
ALTER TABLE temptable DROP COLUMN PASSWORD,SECONDPASS
SELECT * FROM temptable
DROP TABLE temptable
但我不能。 Anyhelp将不胜感激,谢谢。
答案 0 :(得分:3)
由于Linq to SQL与您尝试执行的表格操作没有对应关系,因此简短的回答是您不能这样做。
从查询的结构来看,虽然看起来如下:
EFESRDP0
中的所有记录都会添加到之前不存在的表temptable
从temptable
其余数据作为记录集
删除临时表
指定从原始表返回的列列表这是一种冗长的方式,不是吗?
应该修复错误的SQL不应该变得更糟糕的LINQ在查询语法中,简单形式为:
var results =
from row in context.EFESRDP0
select new { row.ID, row.Name, row.LastLoginTime /* or whatever */ };
这将导致SQL查询类似于:
SELECT ID, Name, LastLoginTime
FROM EFESRDP0;
这比你发布的SQL简单得多,并且在没有所有桌上体操的情况下基本上做同样的事情。
答案 1 :(得分:0)
由于您的SQL语句有效地返回除Password和SECONDPASS之外的所有列,您可以使用像Corey这样的简单Linq创建一个新的匿名类型。您还可以使用除2之外的所有列定义类型,以便获得类型化结果。即:此示例仅返回样本Northwind..Customers表中的3列:
void Main()
{
DataContext db = new DataContext(@"server=.\SQLexpress;trusted_connection=yes;database=Northwind");
Table<Customer> Customers = db.GetTable<Customer>();
// for LinqPad
//Customers.Dump();
}
[Table(Name = "Customers")]
public class Customer
{
[Column]
public string CustomerID { get; set; }
[Column]
public string ContactName { get; set; }
[Column]
public string CompanyName { get; set; }
}