Linq to sql 是我的错误还是我的失败?
我已经把bug发送到了fsbugs@microsoft.com但是我还将此链接添加到信函中,以获得额外的描述、代码突出显示、讨论和也许有人会找到某种方法来避免它,因为我非常喜欢它并且想使用它 代码:Linq to sql 是我的错误还是我的失败?,linq-to-sql,f#,Linq To Sql,F#,我已经把bug发送到了fsbugs@microsoft.com但是我还将此链接添加到信函中,以获得额外的描述、代码突出显示、讨论和也许有人会找到某种方法来避免它,因为我非常喜欢它并且想使用它 代码: <@ seq {for a in db.ArchiveAnalogs do for d in db.Deltas do if a.ID = d.ID then if a.Value > d.D
<@ seq {for a in db.ArchiveAnalogs do
for d in db.Deltas do
if a.ID = d.ID then
if a.Value > d.DeltaLimit then
yield a.Date, d.AboveMessage
else if a.Value < d.DeltaLimit then
yield a.Date, d.BelowMessage}
@> |> query |> Array.ofSeq
let px =
query <|
<@ seq { for cl in db.Dictionaries -> cl }
|> Seq.filter(fun x -> x.ID_Line = l1 || x.ID_Line = l2) @>
|> fun pquery ->
query <|
<@ seq { for cd in db.DeltaCompares do
for cl1 in pquery do
if cd.IID1 = cl1.IID then
for cl2 in pquery do
if cd.IID2 = cl2.IID then
yield cl1
yield cl2 } @>
|> List.ofSeq
F#-to LINQ查询转换器:调用
(无,
System.Collections.Generic.IEnumerable1[System.Tuple
2[System.DateTime,System.String]]
Singleton[Tuple2](System.Tuple
2[System.DateTime,System.String]),
[NewTuple(PropertyGet(Some(a),System.DateTime-Date,[]),
PropertyGet(Some(d),消息上方的System.String,
[])])这不是有效的查询
表情。检查设备的规格
允许查询并考虑移动
部分查询出了报价单
固定的
代码:
<@ seq {for a in db.ArchiveAnalogs do
for d in db.Deltas do
if a.ID = d.ID then
if a.Value > d.DeltaLimit then
yield a.Date, d.AboveMessage
else if a.Value < d.DeltaLimit then
yield a.Date, d.BelowMessage}
@> |> query |> Array.ofSeq
let px =
query <|
<@ seq { for cl in db.Dictionaries -> cl }
|> Seq.filter(fun x -> x.ID_Line = l1 || x.ID_Line = l2) @>
|> fun pquery ->
query <|
<@ seq { for cd in db.DeltaCompares do
for cl1 in pquery do
if cd.IID1 = cl1.IID then
for cl2 in pquery do
if cd.IID2 = cl2.IID then
yield cl1
yield cl2 } @>
|> List.ofSeq
让px=
查询顺序过滤器(funx->x.ID_-Line=l1 | | x.ID_-Line=l2)@>
|>趣味问答->
查询列表.ofSeq
更新时出现相同错误:
<@ seq {for a in db.ArchiveAnalogs do
for d in db.Deltas do
if a.ID = d.ID && a.Value > d.DeltaLimit then
yield a.Date, d.AboveMessage
elif a.ID = d.ID && a.Value < d.DeltaLimit then
yield a.Date, d.BelowMessage}
@> |> query |> Array.ofSeq
let p =
[for cl in db.Dictionaries -> cl]
|> Seq.filter(fun x -> x.ID_Line = l1 || x.ID_Line = l2)
|> fun pquery ->
<@ seq { for cd in db.DeltaCompares do
for cl1 in pquery do
for cl2 in pquery do
if cd.IID1 = cl1.IID && cd.IID2 = cl2.IID then
yield cl1, cl2 } @>
|> query |> Seq.collect(fun a -> [fst a; snd a])
让p=
[对于数据库字典中的cl->cl]
|>顺序过滤器(趣味x->x.ID_线=l1 | | x.ID_线=l2)
|>趣味问答->
|>查询|>顺序收集(乐趣a->[fst a;snd a])
错误消息:
查询中使用了以下构造,但未使用
由F#to LINQ查询识别
翻译:呼叫(无,
System.Collections.Generic.IEnumerable`1[LinqBase.Dictionary]
单音词典,
[cl1])这不是有效的查询表达式。检查设备的规格
允许查询并考虑移动
部分查询出了报价单
固定的
我不确定我是否做得正确,所以我还要求您确认这是否是一个错误在第一种情况下,我认为F#to LINQ转换器可能在嵌套的
if
上失败。你试过:(…)
EDIT[第二次尝试]:它也可能失败,因为我们正在使用if
而不使用else
子句。如果您总是使用选项
键入并过滤掉无
值(可能有一种方法可以让它变得更好,但让我们从这个开始):
这是使用引号拼接。有关此功能的详细信息,(搜索拼接)。更新代码后的错误仍然相同。毕竟我看到了一些可以手动添加的变通方法,但我找不到它们,也不知道这是否对我有帮助。@nCdy:我为第一个案例添加了另一个尝试。@nCdy。。。以及为什么第二个是错误的解释。(主要错误不是错误,但可能涉及其他错误)
let pquery = <@ db.Dictionaries
|> Seq.filter(fun x -> x.ID_Line = l1 || x.ID_Line = l2) @>
let px =
<@ seq { for cd in db.DeltaCompares do
for p in %pquery do ... } |> query