使用LINQ lambda动态添加选择字段

时间:2010-08-17 10:18:59

标签: c# linq select checkboxlist

假设我们有一个表达方式:

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有条件地添加要输出的字段。

当然,我认为我试图以错误的方式解决这个问题......

4 个答案:

答案 0 :(得分:1)

  
    

我想它看起来像这样:

  

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

在多个选择之间没有真正好的方法可供选择。我可能会使用开关/盒子。

答案 1 :(得分:0)

您可能希望查看此Dynamic LINQ and Dynamic Lambda expressions?

Dynamic Expression API(System.Linq.Dynamic)。

答案 2 :(得分:0)

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

很难保持强类型(具有各种优势),同时在获取内容方面具有动态性。当然,如果您总是想要获取相同的“形状”数据(例如,每行只有一个decimal值),那么这相当容易 - 请告诉我您是否希望看到这些内容。

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

答案 3 :(得分:0)

如果我理解你的正确,这就是解释如何构建动态查询:

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx