如何在linq中直接执行SQL查询

sha*_*mim 9 c# linq linq-to-sql

在使用VS 2008的C#中,我有一个查询,在这个查询中我加入了多个表,所以我不知道类型,我想知道如何在linq中直接运行sql查询.

IEnumerable<Type> results = db.ExecuteQuery<TYpe>("sql query")
Run Code Online (Sandbox Code Playgroud)

我上面的查询工作正常,但我想避免类型,我想写

var results = db.ExecuteQuery("sql query");
Run Code Online (Sandbox Code Playgroud)

有没有办法写呢?

提前致谢.

HB *_*AAM 6

    var result = dataContext.ExecuteQuery<JobsDto>
                 ("Select JobID,JobName From jobs");
Run Code Online (Sandbox Code Playgroud)

但要确保JobsDto有两个属性JobID,JobName并且类型与表列类型相同

PS.DTO代表数据传输对象


Mar*_*ade 5

您需要从查询结果中指定要映射到的类型.您可以使用System.Type对象而不是将其静态指定为泛型类型参数:

var results = db.ExecuteQuery(typeof(Customer), "sql query ");
Run Code Online (Sandbox Code Playgroud)

如果您只想要一个普通的ADO.NET DataReader,您可以使用该DataContext.Connection属性:

using (var cmd = db.Connection.CreateCommand()) 
{ 
  cmd.CommandText = "sql query ";
  var results = cmd.ExecuteReader();
}
Run Code Online (Sandbox Code Playgroud)