DataContext.ExecuteQuery(CustomType,Query)返回初始化CustomType的IEnumerable

时间:2013-12-15 09:11:17

标签: c# sql-server ienumerable datacontext

我需要在数据库上执行运行时定义的SQL查询,并在数据网格上显示结果。 我使用此代码查询数据库。它应该返回一个IEnumerable运行时定义的customType

对象
List<dynamic> result;
using (context = new DataContext(ConnStr))
{
   IEnumerable enumerable = context.ExecuteQuery(customType, query);
   result = enumerable.Cast<dynamic>().ToList();
}

示例customType和Query I使用如下

CustomType:CustomType是在运行时创建的,它等同于:

class customType 
{
 public int Id {get; set;}
}

查询:

Select id from TestTable

ExecuteQuery返回的是所有id为0的customType对象列表。 我使用context.ExecuteQuery做了同样的事情,这次我在编译时定义了我的customType(&lt;&gt;运算符不能与Type实例一起使用),并且它按预期工作并返回合法ID列表。 我检查了msdn页面,找到了这个有趣的描述:

  

公共方法 ExecuteQuery(String,Object [])执行SQL   直接在数据库上查询并返回对象

     

公共方法 ExecuteQuery(Type,String,Object [])直接执行SQL查询   数据库。

感谢任何帮助。

更新: 我的SQL Server数据库中的TestTable定义:

CREATE TABLE [dbo].[TestTable](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [StartDate] [datetime] NOT NULL,
    [BasePath] [varchar](512) NOT NULL,

 CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

(如果有任何语法错误,那就是错字)

0 个答案:

没有答案