1

假设我们有一个表达式:

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

4 回答 4

1

我想它看起来像这样:

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

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

于 2010-08-17T11:12:26.243 回答
0

您可能想看看这个Dynamic LINQ 和 Dynamic Lambda 表达式?

动态表达式 API (System.Linq.Dynamic)。

于 2010-08-17T10:20:25.733 回答
0

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

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

如果您能告诉我们更多关于您的问题的信息,我们或许可以提出替代解决方案。

于 2010-08-17T10:22:50.483 回答
0

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

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

于 2010-08-17T10:22:56.370 回答