我的应用程序是客户端 - 服务器设置,客户端向服务器请求服务器查找给定区域中的对象。它将发送服务器的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