Linq存储过程具有动态结果

时间:2009-09-30 20:13:00

标签: linq .net-3.5

所以我对.Net 3.5中的Linq非常陌生并且有一个问题。我使用一个自定义类来处理存储过程的以下结果:

  • 设置1:ID名称年龄
  • 设置2:ID地址城市
  • 设置3:ID产品价格

使用我的自定义类,我会从数据库中收到一个包含3个DataTables的DataSet,其中的列基于从DB返回的内容。

我的问题是如何使用LINQ实现这一目标?我将需要一次点击数据库并返回包含不同类型数据的多个集合。

另外,我如何使用LINQ根据参数返回动态数量的集合(可以获得1次设置,可以获得N金额)?

我查看了这个article,但没有找到解释多个集合的任何内容(只有一个集合可以是动态的,也可以是单个标量值和单个集合)。

任何文章/评论都会有所帮助。

由于

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

我自己并不熟悉LINQ,但here是MSDN在LINQ Samples上的网站,可能会帮助你。

答案 2 :(得分:0)

编辑:我道歉,我错过了你提到你想要帮助使用LINQ with Stored Procedures的标题,我的下面的答案根本没有解决这个问题,不幸的是我没有必要使用带有LINQ的sprocs所以我我不确定我的以下答案是否有帮助。

LINQ to SQL能够将多组数据水合成对象图,同时一次点击数据库。但是,我不认为LINQ会实现你最终想要的东西 - 据我所知,这是一个完全动态的数据集,它是在查询本身之外定义的。也许我误解了这个问题,如果您提供现有应用程序使用的示例代码,它可能会有所帮助吗?

这是一个快速示例,说明如何使用单个数据库调用来保持匿名类型,也许它会有所帮助:

var query = from p in db.Products
            select new
                       {
                           Product = p,
                           NumberOfOrders = p.Orders.Count(),
                           LastOrderDate = p.Orders.OrderByDescending().Take(1).Select(o => o.OrderDate),
                           Orders = p.Orders
                       };