3
F #의 IQueryable 개체에 대한 쿼리 스타일 대신 람다 스타일 쿼리를 사용할 수 있습니까? 같은 뭔가 :이 프로필F #의 IQueryable 람다 스타일
type schema = SqlDataConnection<"Data Source=(local);Initial Catalog=MyDatabase;Integrated Security=true;">
let db = schema.GetDataContext()
let q = db.MyTable |> Seq.filter (fun r -> r.id < 100) |> Seq.take 10
let result = q |> List.ofSeq
select * from MyTable
그래서 난 필터를 가정하고 IEnumerables
하지 IQueryables
에서 실행되는 걸릴거야?
또는이를 ambda없이 query {}
을 사용하도록 수정하는 유일한 방법은 무엇입니까?
type SqlDataConnection<...>(...) =
interface seq<'T> with
member __.GetEnumerator() = executeSQL()
당신이 대신 된 IQueryable로 작동 할 경우
의하지 않습니다 IEnumerable을, F 번호의 쿼리 구문이있다 'db.MyTable.Where (fun r -> r.id <100) .take (10)'와 같은 yntax는 C#과 유사합니까? –
아 맞습니다! 그것은 나에게 결코 일어난 적이 없다. .. 단지 관심 밖의, 이것은 '적당한'F # 배관으로 할 수 없다? 나는 당신이'Seq.filter'를 호출 할 때 실제로'.AsEnumerable()'을 호출하고 있다고 생각합니다. – user826840
필자는 F # 구문에 문제가 있다고 생각하지 않지만'IQueryable'보다는'IEnumerable'을 사용하는'Seq'에 대해 더 많이 생각합니다. IEnumerable로 변환하면 쿼리가 강제로 실행됩니다. 아마 당신은 이것에 대한 해결책을 찾을 수 있습니다 : http://stackoverflow.com/a/13828080/54937 –