2010-08-17 89 views
1

动态添加选择字段比方说,我们有一个表达:使用LINQ拉姆达

var prices = from p in PriceDB.Prices 
      where p.TypeID == 12 
      orderby p.PriceType.Title 
      select p; 

是否有可能修改选择列表?

我想象它看起来像这样:

var newPriceList = prices.Select(p => p.ExchangeRate); 

这可能是一个奇怪的要求,但在我的代码(这也太漫长而复杂,张贴在这里),我希望有条件字段添加到输出取决于CheckBoxList。

我认为,当然,我试图去了解这个错误的方式...

+0

感谢您提供的所有帮助和链接。我已经决定重写我的代码,以取出两组结果,按原样进行预过滤,然后将它们结合到内存中。为了更清楚地了解我在做什么:我有一个表返回许多结果,另外两个表分别提供一个值列表和一个值类型列表。我想只返回一个结果集,只有用户选择的值类型的值。基本上我认为我试图让LINQ生成一个数据透视表,但嘿... – 2010-08-17 10:59:12

回答

0

虽然你可能走下去的动态路线,我会强烈考虑不这样做。在特定情况下,如果您不需要额外价值,那么获取额外价值的成本是多少?他们是动态显示的问题,你只希望他们在某些情况下显示?如果是这样,我建议以某种方式修改显示代码。

很难保持强类型(它具有各种优点),同时根据您的获取动态而动态。当然,如果你总是想要获取相同的“形状”数据(例如,每行只有一个值为decimal),那么这相当容易 - 让我知道如果这是你想看到的东西演示。

如果您可以告诉我们关于您的问题的更多信息,我们可能会提供其他解决方案。

+0

对于100列表,读取冗余值意味着不必要的网络IO。另外它也会影响查询执行计划。 – 2010-08-17 10:32:10

+0

@Hasan:当然,这就是为什么我问什么是成本。我们当然不知道这个表格目前有100列。 – 2010-08-17 10:54:03

1

我想象它看起来像这样:

实际上它会看起来就像那样。首先,建立一个查询,选择整个记录。然后添加一个select(使用Select()方法似乎是最简单的方法)来限制选择。 Linq-to-Sql会整理这两个选择,并使用正确的reselt,因此只有一个选择在最终的SQL中。

没有真正好的方法来选择多个选择。我可能会使用开关/外壳。

+0

您是否删除了您的代码示例? – 2010-08-18 06:44:46

+0

否。第一行是来自OP的报价,并指代那里的代码。 – 2010-08-18 11:22:25