不是< |不适用于linq2sql?

时间:2011-03-29 06:03:26

标签: linq-to-sql f#

<@[for i in linq.TrueIncidents -> i.RecTime, i.Name, (if i.Description = null && i.ID.HasValue = false then i.Message else "hello") ] @>

作品

<@[for i in linq.TrueIncidents -> i.RecTime, i.Name, (if i.Description = null && not <| i.ID.HasValue then i.Message else "hello") ] @>

不起作用

在linq2sql中“不”有效吗?还是一个bug?

1 个答案:

答案 0 :(得分:2)

我认为这是对LINQ翻译器的F#引用的已知限制。据我所知,翻译者在编写时会留下子表达式(例如if .. then中的条件或yield ..后面的表达式),因此您只能使用C#理解的结构。

处理流水线操作的唯一地方是写:

<@ source |> Seq.filter (...) |> Seq.etc (...) @>

您可以在源代码中看到 - 在LinqQueries.fs中搜索CallPipe。这肯定有点不幸,因为|><|都可以通过用它们的定义替换它们来处理(这很简单)。我相信这将在下一个F#版本中得到改进,因此您可以通过 microsoft dot com fsbugs 发送电子邮件,以确保此错误无效不要迷路。