私のアプリは、クライアントがサーバーに特定の地域のオブジェクトを要求するクライアント/サーバーセットアップです。サーバーxとyの座標と半径を送信します。サーバーは、指定された領域内のオブジェクトのSQL Serverデータベースを照会する必要があります。データベースでは、オブジェクトはx座標とy座標で格納されます。Linq To SQLの簡単な手順
まず、メソッドを、WCF経由でサーバーに渡されたRegion
オブジェクトで試しました。もちろん、メソッドをT-SQLに変換できなかったため、うまくいきませんでした。しかし、私は、簡単なラムダ式は、LINQクエリで使用されて見ていたので、私はこれを試してみました:
Func<UniverseStationaryObject, RegionLocation, bool> contains =
(universeObject, location) => Math.Sqrt(
Math.Pow(universeObject.locationX - location.x, 2) +
Math.Pow(universeObject.locationY - location.y, 2)
) <= location.radius;
var objects = from o in dataContext.UniverseStationaryObjects
where contains.Invoke(o, Location)
select o;
残念ながら、これは動作しませんでしたどちらか - 私は一部関数がSQLクエリにLINQのでは許可されていることを読んだことがありますしかし、数学関数はそれらの間にないと思いますか?これにはストアドファンクションが必要ですか?ストアドファンクションはどのように見えますか(私はT-SQLでこれを書いたことはありません)?関数にC#オブジェクトを渡して、dbサーバーに渡すすべての値を抽出しないようにすることはできますか?つまり、linq-to-sqlクラスのデザイナにストアド関数を追加すると、オブジェクトを受け入れ、その時点で値を抽出できるのですか?
すべてのオブジェクトを取得してC#でフィルタリングするオプションはありません。
oohの、クールな:)悲しいことに、私は先に行って、すでに保存された機能を作成する方法を学びました:(私はこれを試してみるつもりですあまりにも –