小编Ala*_*ker的帖子

在CLR存储过程中的DataTable上的LINQ

有人知道在CLR存储过程中是否可以(以及如何)在DataTable上使用LINQ ?

但是,在标准WinForms项目中使用DataTable上的LINQ没有问题; 我在SQL2005上使用VS2010中的数据库项目并创建存储过程:

(简化列表)

[Microsoft.SqlServer.Server.SqlProcedure]
public static void ProcessReOrder()
{       
    using (SqlConnection conn = new SqlConnection("context connection=true")) { 
        SqlDataAdapter adapter = new SqlDataAdapter("database.dbo.OtherSp", conn);  
        DataTable table = new DataTable("ReOrder");
        adapter.Fill(table);

        var query = from t in table.AsEnumerable() 
                    where t.Field<int>("Id") > 1000 select t.Field<int>("Id");

    etc.....
}
Run Code Online (Sandbox Code Playgroud)

问题是,AsEnumerable()是一个扩展方法,虽然我已经得到了使用参照LINQ; 它还没有找到.

搜索Google,让我相信这与使用隐藏在框架中的LINQ实体引用(DLL)有关,但是,由于这是一个DB项目,我们不能添加对系统上任何DLL的引用; 添加引用框仅限于少数几个程序集,并且没有浏览...按钮.

无论性能问题如何,我都不想在我的.NET存储过程中手动滚动很多ADO/T-SQL; 我更喜欢LINQ以及将代码移动到不同层/ DB平台的能力.是否支持存储过程中的DataTable上的LINQ(我猜不会)或者我完全偏离此处并且必须使用T-SQL进行编码?

.net linq clr stored-procedures

8
推荐指数
1
解决办法
3682
查看次数

标签 统计

.net ×1

clr ×1

linq ×1

stored-procedures ×1