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

问题描述 投票:10回答:2

在带有VS 2008的C#中,我有一个查询,在此查询中,我联接了多个表,所以我不知道类型,我想知道如何在linq中直接运行sql查询。

IEnumerable<Type> results = db.ExecuteQuery<TYpe>("sql query")

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

var results = db.ExecuteQuery("sql query");

有什么写法吗?

提前感谢。

c# linq linq-to-sql
2个回答
7
投票
var result = dataContext.ExecuteQuery<JobsDto>("Select JobID,JobName From jobs");

但是请确保JobsDto具有两个属性JobIDJobName,并且它们的类型与表列的类型相同。

PS:DTO代表数据传输对象。


5
投票

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

var results = db.ExecuteQuery(typeof(Customer), "sql query ");

如果只需要普通的ADO.NET DataReader,则可以使用DataContext.Connection属性:

using (var cmd = db.Connection.CreateCommand()) 
{ 
  cmd.CommandText = "sql query ";
  var results = cmd.ExecuteReader();
}
© www.soinside.com 2019 - 2024. All rights reserved.