我试图获取距离不超过200米的数据库中的点,并且我使用以下代码但它还检索数据库中的所有点
var pin = from pinsA in db.PINS
.Where(p => p.PRIVACY == 0 || p.USER_ID == userId
&& (double)currentPoint.Distance(p.location) < 200.0)
.Select(pr => new { pr.PIN_ID, pr.TYPE, pr.location })
select new { pinsA.PIN_ID, pinsA.TYPE, pinsA.location } ;
答案 0 :(得分:0)
您没有提供具体条件,但我认为您的Where
子句中缺少括号,请尝试:
Where((p => p.PRIVACY == 0 || p.USER_ID == userId)
&& (double)currentPoint.Distance(p.location) < 200.0)
答案 1 :(得分:0)
虽然它是偏好的东西,但我不确定是否需要混合匹配查询&#34;语言&#34; (这可能不是帮助),也不需要&#34; double&#34;选择。
我同意 jnovo&#39> 帖子,因为你很可能在你的where子句中缺少括号,但请尝试以下任一方法:
选项1:
var pinsWithin200 = from pins in db.Pins
where ((pins.PRIVACY == 0 || pins.USER_ID == userId) && pins.location.Distance(currentPoint) <= 200)
select new
{
PIN_ID = pins.PIN_ID,
TYPE = pins.TYPE,
location = pins.location
};
var results = pinsWithin200.ToList();
选项2:
var pinsWithin200 = db.Pins
.Where(p => (p.PRIVACY == 0 || p.USER_ID == userId) && p.location.Distance(currentPoint) <= 200)
.Select(p => new
{
PIN_ID = p.PIN_ID,
TYPE = p.TYPE,
location = p.location
};
var results = pinsWithin200.ToList();
无论你喜欢什么,它们都更清洁,没有双重选择。另请注意,在匿名类型中明确命名属性的良好做法。