Linq- ExcuteQuery用法
DataContext.ExecuteQuery<TResult> 方法 (String, Object[])
语法:
public IEnumerable<TResult> ExecuteQuery<TResult>( string query, params Object[] parameters )
类型参数:
- TResult:返回的集合中的元素的类型。
参数:
- query
- 类型:System.String
要执行的 SQL 查询。
- parameters
- 类型:System.Object[]
要传递给命令的参数数组。 注意下面的行为:
如果数组中的对象的数目小于命令字符串中已标识的最大数,则会引发异常。
如果数组包含未在命令字符串中引用的对象,则不会引发异常。
如果某参数为 null,则该参数会转换为 DBNull.Value。
备注:
当 LINQ to SQL 不足以应对特定方案时,此方法可用作一种传递机制。
使查询结果中的列与对象中的字段和属性相匹配的算法如下所示:
-
如果字段或属性映射到特定列名称,则结果集中应包含该列名称。
-
如果未映射字段或属性,则结果集中应包含其名称与该字段或属性相同的列。
-
通过先查找区分大小写的匹配来执行比较。 如果未找到匹配项,则会继续搜索不区分大小写的匹配项。
-
如果同时满足下列所有条件,则该查询应当返回(除延迟加载的对象外的)对象的所有跟踪的字段和属性:
-
如果 <T> 是由 DataContext 显式跟踪的实体。
-
ObjectTrackingEnabled 为 true。
-
实体具有主键。
否则会引发异常。
-
-
在所有其他情况下,查询只能检索对象的已跟踪字段和属性的子集。
下面的 C# 代码段显示此方法的一个用途:
var customers = db.ExecuteQuery<Customer>(@"SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM dbo.Customers WHERE City = {0}", "London"); foreach (Customer c in customers) Console.WriteLine(c.ContactName);