Bu başka bir accessing dynamic objects in F# almaktır. Sorguyu parametrize etmek ve gerekli öğeleri ayıklamak için let y = x.Where(fun x -> x.City ="London").Select("new(City,Zip)")
kullanıyorum. Bunlar, bir SQL sorgusundaki sütunlara karşılık gelir ve datacontext'in bir özelliği tarafından temsil edilir. Bu parametre olarak geçmek istediğim kısım.Parametrik LINQ sorgusu
type Northwind = ODataService<"http://services.odata.org/Northwind/Northwind.svc">
let db = Northwind.GetDataContext()
let query2 = query { for customer in db.Customers do
select customer} |> Seq.toArray
let qryfun (x:Northwind.ServiceTypes.Customer) =
query { for x in query2 do
select (x.City,x.CompanyName,x.Country)}
Temelde ben sadece x
aynı zamanda x.*
geçmek istiyoruz. Sabit olan bir veritabanına erişirken, x'i katlayabilirim. Ancak şimdi farklı sütunları ayıklayan 40 küçük fonksiyon var. Tek bir işlev için onu hesaba katmak ve özelliği bir argüman olarak iletmek mümkün mü? Yani bazen x.City
'u ancak diğer zamanlarda x.Country
'u çıkarırım. Teklifleri kullanmayı denedim, ancak doğru şekilde ekleyemiyorum ve belki de bu doğru bir yaklaşım değil. tırnak ekleme İlişkin
Ben sadece bir olarak başlığın kabul edecek 'seçmek (müşteri, customer.City)' ve 'qryfun' gibi sorgudan tuple döndürmek düşünüyorum parametre Tüm müşteri özelliklerinin statik türü olmadığından, işlevler/dönüştürmeler arasında ara veri akışı için tupller kullanırsınız veya kendi kayıt türünüzü tanımlayın ve sorgunuzda – paulik
@paulik thx ile eşleyin. Yapılabileceğinden emin değilim. Örneğin. 'qryfun (x, x.column) = sorgu {sorgu2'de x için seçin (x.column)}' burada x DB tablosu (Northwind.ServiceTypes.Customer) ve x.column bir sütun (veya alan) Müşteri tablosunda, x.City, x.Country, vb .... olabilirdi o zaman ben "qryfun (Northwind.ServiceTypes.Customer, Northwind.ServiceTypes.Customer.City)" diyebilirim çünkü 2. argüman zor Northwind.ServiceTypes.Customer.City tabloya değil her kayıta aittir. Başvurulan soruya bakarsanız, bir dizgeden ("yeni (Şehir, Ülke)") – s952163