Научи меня, как мне улучшить мои F # linq2sql seqences
здесь я использую linq2sql, но думаю, что у меня с этим проблемы.
и основная проблема - доступ по ID здесь, в примере я делаю 2 встроенных для, но я получил очень страшные запросы linq2 sql, потому что я не знаю, есть ли какие-то дополнительные методы или способы сделать это ...
member X.deltaArchive() = // Reacting on delta limits
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 d.AboveMessage
else if a.Value < d.DeltaLimit then
yield d.BelowMessage
} |> Array.ofSeq
Таким образом, полный вопрос: есть ли способ сделать то же самое, не используя встроенные циклы, чтобы найти соответствие id?
Спасибо.
Добавлено:
с использованием:
<@ 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
получил ошибку:
The following construct was used in query but is not recognised by the F#-to-LINQ query translator:
Call (None,
System.Collections.Generic.IEnumerable`1[System.Tuple`2[System.DateTime,System.String]] Singleton[Tuple`2](System.Tuple`2[System.DateTime,System.String]),
[NewTuple (PropertyGet (Some (a), System.DateTime Date, []),
PropertyGet (Some (d), System.String AboveMessage, []))])
This is not a valid query expression. Check the specification of permitted queries and consider moving some of the query out of the quotation
offtopic: я должен найти решение, потому что это первая ссылка Google о "F # linq2sql"