我的應用程序是客戶端 - 服務器設置,客戶端向服務器請求服務器查找給定區域中的對象。它將發送服務器的x和y座標以及半徑。然後,服務器必須在SQL Server數據庫中查詢指定區域中的對象。在數據庫中,對象按其x和y座標存儲。Linq to SQL中的簡單程序
首先我嘗試了contains
方法中的Region
對象通過WCF傳遞給服務器。那麼,當然這不起作用,因爲它不能將該方法轉換爲T-SQL。但我見過在LINQ查詢中使用簡單的lambda表達式,所以我想這:
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;
不幸的是,這並沒有工作,要麼 - 我已閱讀,一些功能在允許的LINQ到SQL查詢,但我猜數學功能不在其中?我需要一個存儲的功能嗎?存儲的函數會是什麼樣子(我從來沒有在T-SQL中寫過)?我可以將C#對象傳遞給函數,並避免提取每個值傳遞給數據庫服務器?我的意思是,當我將存儲的函數添加到linq-to-sql類設計器時,我可以讓它接受一個對象並提取這個值嗎?
請注意,它不是一個檢索每個對象並在C#中篩選它們的選項。
哦,爽:)可惜我繼續和學會了如何使存儲的功能已經:(但我要試試這個太 – 2011-01-21 04:38:41