これは別のものですaccessing dynamic objects in F#私はlet y = x.Where(fun x -> x.City ="London").Select("new(City,Zip)")
を使用してクエリをパラメータ化し、必要な項目を抽出しています。これらはSQLクエリの列に対応し、datacontextのプロパティで表されます。これは私がパラメータとして渡したい部分です。パラメトリックLINQクエリ
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)}
基本的に私はx
もx.*
ないだけで合格したいと思います。固定されている1つのデータベースにアクセスしているので、xを除外することができます。しかし、今私は40の小さな関数は、異なる列を抽出している。それを1つの関数に因数分解し、その引数を引数として渡すことは可能ですか?だから時々、私はx.City
を抽出しますが、他の時はx.Country
です。私は引用符を使用しようとしましたが、適切にスプライスすることはできませんし、それは正しいアプローチではないかもしれません。引用スプライシングについて
私はあなただけのようにタプルを受け入れる '選択(顧客、customer.City)'とあなたの 'qryfun'ようなクエリからのタプルを返すことができると思いますパラメータ さまざまな顧客プロパティには静的型がないため、関数/変換間の中間データフローにタプルを使用するか、独自のレコード型を定義してクエリにマッピングします。 – paulik
@paulik thx。私はそれが実行可能であるかどうかはわかりません。例えば。 'x 'はDBテーブル(Northwind.ServiceTypes.Customer)であり、x.columnはColumn(またはフィールド)です。 )Customerテーブル内では、x.City、x.Countryなどとなります。次に 'qryfun(Northwind.ServiceTypes.Customer、Northwind.ServiceTypes.Customer.City) 'を呼び出します。第2引数は扱いにくいNorthwind.ServiceTypes.Customer.Cityは、テーブルにない各レコードに属します。参照された質問を見てみると、私は文字列( "new(City、Country)"からそれをbultします) – s952163