日期:2014-05-20  浏览次数:20848 次

关于DataContext.ExecuteQuery()方法使用问题
在LINQ中包含两个DataContext.ExecuteQuery()方法
1.DataContext.ExecuteQuery<(Of <(TResult>)>) 泛型方法 (String, array<Object>[])

2.DataContext.ExecuteQuery 方法 (Type, String, array<Object>[])

他可以直接查询SQL语句,但是我在网上看的都是用的第一种方法

但我现在的SQL是一个嵌套查询,很复杂,不知道能不能用
DataContext.ExecuteQuery 方法 (Type, String, array<Object>[])
直接查询,请高手帮忙,不会写了,因为不知道这几个参数该传什么.

我的SQL:
SELECT T_Project.projectIndex, T_Project.ItemSetupCode, T_Project.CheckTwo, 
  T_Project.CheckThree, T_Project.PublishDate, T_Project.AuthorSample, 
  T_Project.ArrivalDate, T_Project.AlertDate, T_Project.NoteMark, 
  T_BookBaseInfo.BookName, T_BookBaseInfo.ForTeachingOrSocial, 
  T_BookBaseInfo.BelongToEditRoom, T_Author.Name, T_Author.CallNumber, 
  T_Author.CallNumberHome, T_Author.MobileNumber, T_Project.SignedDate, 
  T_Project.IsCompleted, T_Project.Season, T_BookBaseInfo.PlanEditor, 
  T_BookBaseInfo.DutyEditor
FROM T_Project INNER JOIN
  T_ItemSetUp ON 
  T_Project.ItemSetupCode = T_ItemSetUp.ItemSetUpCode INNER JOIN
  T_Author ON T_ItemSetUp.IDNumber = T_Author.IDNumber INNER JOIN
  T_BookBaseInfo ON T_ItemSetUp.BookCode = T_BookBaseInfo.BookCode

在线等,急

------解决方案--------------------
你搞错了一件事...直接SQL查询也是返回实体集合的...所以先去写你的实体类...

elementType
类型:System.Type
要返回的 IEnumerable<(Of <(T>)>) 的类型。

使查询结果中的列与对象中的字段或属性相匹配的算法如下所示:
 如果字段或属性映射到特定列名称,则结果集中应包含该列名称。
 如果未映射字段或属性,则结果集中应包含其名称与该字段或属性相同的列。
 通过先查找区分大小写的匹配来执行比较。如果未找到匹配项,则会继续搜索不区分大小写的匹配项。
如果同时满足下列所有条件,则该查询应当返回(除延迟加载的对象外的)对象的所有跟踪的字段和属性:
 T 是由 DataContext 显式跟踪的实体。
 ObjectTrackingEnabled 为 true。
 实体具有主键。
 否则会引发异常。