如何将存储过程的输出转换为匿名类实例的集合?

时间:2010-10-26 16:09:18

标签: c# linq sql-server-2005 linq-to-sql

我有很多pre-linq C#1.0代码,它将存储过程(SQL 2005)的输出转换为对象集合。它如下:

  1. 声明一个具有与输出中的列匹配的属性的类。
  2. 使用SqlDataReader,循环时有行读取
  3. 对于每一行,将对象添加到List
  4. 返回该列表
  5. 虽然大部分代码都是生成的,但我认为linq应该允许更聪明的方式来实现它。 我是否必须明确声明一个类? 在C#3.0中,我应该如何将存储过程的输出转换为对象集合?

    理想情况下我想生成代码,因为我不喜欢向导。谢谢!

    编辑:我没有dbml文件。如果我使用linq到sql,我必须拥有它吗?如果是,如何创建它?

1 个答案:

答案 0 :(得分:1)

如果要保留存储过程而不是编写LINQ to SQL查询,则可以将存储过程拖到dbml文件中,然后它将为您创建类。如果我没记错的话,你可以通过两种方式做到这一点。

1)您可以将返回结果映射到视图。

2)你可以让它为你自动生成一个课程。

如果你的存储过程类似于GetCustomers,那么它会创建一个名为GetCustomersResult之类的类或类似的东西。如果您有一个名为uvCustomers的视图,那么您可以告诉它使用该视图,而不是为每个返回相同列的存储过程使用不同的类。